/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_depthwise_conv2d_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>

#include "sycldnn/padding_mode.h"

#include "test/types/cartesian_product.h"
#include "test/types/kernel_data_types.h"
#include "test/types/test_backend_types.h"
#include "test/types/to_gtest_types.h"

#include "test/depthwise_conv2d/window_stride_fixture.h"

#include <array>
#include <vector>

using DataTypeList = sycldnn::types::KernelDataTypes;
using Backends = sycldnn::types::DefaultBackendTypes;

using SNNTypePairs =
    sycldnn::types::CartesianProduct<DataTypeList, Backends>::type;
using GTestTypePairs = sycldnn::types::ToGTestTypes<SNNTypePairs>::type;

template <typename Pair>
using ForwardWindow5Stride2 =
    sycldnn::depthwise_conv2d::WindowStrideTest<Pair, 5, 2>;
TYPED_TEST_SUITE(ForwardWindow5Stride2, GTestTypePairs);
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1755., 3080.,  3620.,  2205., 4420., 7325., 7975., 4660.,
      7360., 11875., 12525., 7180., 3213., 4940., 5180., 2799.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7325., 7975., 11875., 12525.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3429.,  3510.,  6010.,  6160.,  7060.,  7240.,  4293.,  4410.,
      8600.,  8840.,  14225., 14650., 15475., 15950., 9020.,  9320.,
      14270., 14720., 22975., 23750., 24225., 25050., 13850., 14360.,
      6093.,  6426.,  9310.,  9880.,  9760.,  10360., 5229.,  5598.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {14225., 14650., 15475., 15950.,
                                         22975., 23750., 24225., 25050.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6777.,  6858.,  6939.,  7020.,  11870., 12020., 12170., 12320.,
      13940., 14120., 14300., 14480., 8469.,  8586.,  8703.,  8820.,
      16960., 17200., 17440., 17680., 28025., 28450., 28875., 29300.,
      30475., 30950., 31425., 31900., 17740., 18040., 18340., 18640.,
      28090., 28540., 28990., 29440., 45175., 45950., 46725., 47500.,
      47625., 48450., 49275., 50100., 27190., 27700., 28210., 28720.,
      11853., 12186., 12519., 12852., 18050., 18620., 19190., 19760.,
      18920., 19520., 20120., 20720., 10089., 10458., 10827., 11196.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28025., 28450., 28875., 29300., 30475., 30950., 31425., 31900.,
      45175., 45950., 46725., 47500., 47625., 48450., 49275., 50100.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6525.,  7020.,  11495., 12320., 13595., 14480., 8289.,  8820.,
      16795., 17680., 27825., 29300., 30325., 31900., 17695., 18640.,
      28135., 29440., 45325., 47500., 47825., 50100., 27355., 28720.,
      12033., 12852., 18395., 19760., 19295., 20720., 10341., 11196.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {27825., 29300., 30325., 31900.,
                                         45325., 47500., 47825., 50100.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12897., 13050., 13878., 14040.,  22705., 22990., 24340., 24640.,
      26845., 27190., 28600., 28960.,  16353., 16578., 17406., 17640.,
      33125., 33590., 34880., 35360.,  54825., 55650., 57750., 58600.,
      59725., 60650., 62850., 63800.,  34805., 35390., 36680., 37280.,
      55385., 56270., 57980., 58880.,  89125., 90650., 93450., 95000.,
      94025., 95650., 98550., 100200., 53705., 54710., 56420., 57440.,
      23409., 24066., 25038., 25704.,  35665., 36790., 38380., 39520.,
      37405., 38590., 40240., 41440.,  19953., 20682., 21654., 22392.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      54825., 55650., 57750., 58600., 59725., 60650., 62850., 63800.,
      89125., 90650., 93450., 95000., 94025., 95650., 98550., 100200.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      25641.,  25794.,  25947.,  26100.,  27594.,  27756.,  27918.,  28080.,
      45125.,  45410.,  45695.,  45980.,  48380.,  48680.,  48980.,  49280.,
      53345.,  53690.,  54035.,  54380.,  56840.,  57200.,  57560.,  57920.,
      32481.,  32706.,  32931.,  33156.,  34578.,  34812.,  35046.,  35280.,
      65785.,  66250.,  66715.,  67180.,  69280.,  69760.,  70240.,  70720.,
      108825., 109650., 110475., 111300., 114650., 115500., 116350., 117200.,
      118525., 119450., 120375., 121300., 124750., 125700., 126650., 127600.,
      69025.,  69610.,  70195.,  70780.,  72760.,  73360.,  73960.,  74560.,
      109885., 110770., 111655., 112540., 115060., 115960., 116860., 117760.,
      176725., 178250., 179775., 181300., 185350., 186900., 188450., 190000.,
      186425., 188050., 189675., 191300., 195450., 197100., 198750., 200400.,
      106405., 107410., 108415., 109420., 111820., 112840., 113860., 114880.,
      46161.,  46818.,  47475.,  48132.,  49410.,  50076.,  50742.,  51408.,
      70205.,  71330.,  72455.,  73580.,  75620.,  76760.,  77900.,  79040.,
      73625.,  74810.,  75995.,  77180.,  79280.,  80480.,  81680.,  82880.,
      39177.,  39906.,  40635.,  41364.,  42570.,  43308.,  44046.,  44784.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108825., 109650., 110475., 111300., 114650., 115500., 116350., 117200.,
      118525., 119450., 120375., 121300., 124750., 125700., 126650., 127600.,
      176725., 178250., 179775., 181300., 185350., 186900., 188450., 190000.,
      186425., 188050., 189675., 191300., 195450., 197100., 198750., 200400.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      25137.,  26100.,  27081.,  28080.,  44375.,  45980.,  47615.,  49280.,
      52655.,  54380.,  56135.,  57920.,  32121.,  33156.,  34209.,  35280.,
      65455.,  67180.,  68935.,  70720.,  108425., 111300., 114225., 117200.,
      118225., 121300., 124425., 127600., 68935.,  70780.,  72655.,  74560.,
      109975., 112540., 115135., 117760., 177025., 181300., 185625., 190000.,
      186825., 191300., 195825., 200400., 106735., 109420., 112135., 114880.,
      46521.,  48132.,  49761.,  51408.,  70895.,  73580.,  76295.,  79040.,
      74375.,  77180.,  80015.,  82880.,  39681.,  41364.,  43065.,  44784.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108425., 111300., 114225., 117200., 118225., 121300., 124425., 127600.,
      177025., 181300., 185625., 190000., 186825., 191300., 195825., 200400.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      49977.,  50274.,  51894.,  52200.,  53847.,  54162.,  55836.,  56160.,
      88195.,  88750.,  91390.,  91960.,  94645.,  95230.,  97960.,  98560.,
      104635., 105310., 108070., 108760., 111565., 112270., 115120., 115840.,
      63801.,  64242.,  65862.,  66312.,  67959.,  68418.,  70092.,  70560.,
      129995., 130910., 133430., 134360., 136925., 137870., 140480., 141440.,
      215225., 216850., 220950., 222600., 226775., 228450., 232700., 234400.,
      234625., 236450., 240750., 242600., 246975., 248850., 253300., 255200.,
      136715., 137870., 140390., 141560., 144125., 145310., 147920., 149120.,
      218195., 219950., 223310., 225080., 228485., 230270., 233720., 235520.,
      351025., 354050., 359550., 362600., 368175., 371250., 376900., 380000.,
      370425., 373650., 379350., 382600., 388375., 391650., 397500., 400800.,
      211475., 213470., 216830., 218840., 222245., 224270., 227720., 229760.,
      91737.,  93042.,  94950.,  96264.,  98199.,  99522.,  101484., 102816.,
      139555., 141790., 144910., 147160., 150325., 152590., 155800., 158080.,
      146395., 148750., 151990., 154360., 157645., 160030., 163360., 165760.,
      77913.,  79362.,  81270.,  82728.,  84663.,  86130.,  88092.,  89568.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      215225., 216850., 220950., 222600., 226775., 228450., 232700., 234400.,
      234625., 236450., 240750., 242600., 246975., 248850., 253300., 255200.,
      351025., 354050., 359550., 362600., 368175., 371250., 376900., 380000.,
      370425., 373650., 379350., 382600., 388375., 391650., 397500., 400800.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      99657.,  99954.,  100251., 100548., 103482., 103788., 104094., 104400.,
      107379., 107694., 108009., 108324., 111348., 111672., 111996., 112320.,
      175835., 176390., 176945., 177500., 182210., 182780., 183350., 183920.,
      188705., 189290., 189875., 190460., 195320., 195920., 196520., 197120.,
      208595., 209270., 209945., 210620., 215450., 216140., 216830., 217520.,
      222425., 223130., 223835., 224540., 229520., 230240., 230960., 231680.,
      127161., 127602., 128043., 128484., 131274., 131724., 132174., 132624.,
      135459., 135918., 136377., 136836., 139716., 140184., 140652., 141120.,
      259075., 259990., 260905., 261820., 265930., 266860., 267790., 268720.,
      272905., 273850., 274795., 275740., 280000., 280960., 281920., 282880.,
      428825., 430450., 432075., 433700., 440250., 441900., 443550., 445200.,
      451875., 453550., 455225., 456900., 463700., 465400., 467100., 468800.,
      467425., 469250., 471075., 472900., 479650., 481500., 483350., 485200.,
      492075., 493950., 495825., 497700., 504700., 506600., 508500., 510400.,
      272275., 273430., 274585., 275740., 279610., 280780., 281950., 283120.,
      287065., 288250., 289435., 290620., 294640., 295840., 297040., 298240.,
      434635., 436390., 438145., 439900., 444850., 446620., 448390., 450160.,
      455185., 456970., 458755., 460540., 465640., 467440., 469240., 471040.,
      699025., 702050., 705075., 708100., 716050., 719100., 722150., 725200.,
      733275., 736350., 739425., 742500., 750700., 753800., 756900., 760000.,
      737625., 740850., 744075., 747300., 755450., 758700., 761950., 765200.,
      773475., 776750., 780025., 783300., 791700., 795000., 798300., 801600.,
      420955., 422950., 424945., 426940., 431650., 433660., 435670., 437680.,
      442465., 444490., 446515., 448540., 453400., 455440., 457480., 459520.,
      182169., 183474., 184779., 186084., 188586., 189900., 191214., 192528.,
      195075., 196398., 197721., 199044., 201636., 202968., 204300., 205632.,
      276875., 279110., 281345., 283580., 287570., 289820., 292070., 294320.,
      298385., 300650., 302915., 305180., 309320., 311600., 313880., 316160.,
      290435., 292790., 295145., 297500., 301610., 303980., 306350., 308720.,
      312905., 315290., 317675., 320060., 324320., 326720., 329120., 331520.,
      154377., 155826., 157275., 158724., 161082., 162540., 163998., 165456.,
      167859., 169326., 170793., 172260., 174708., 176184., 177660., 179136.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      428825., 430450., 432075., 433700., 440250., 441900., 443550., 445200.,
      451875., 453550., 455225., 456900., 463700., 465400., 467100., 468800.,
      467425., 469250., 471075., 472900., 479650., 481500., 483350., 485200.,
      492075., 493950., 495825., 497700., 504700., 506600., 508500., 510400.,
      699025., 702050., 705075., 708100., 716050., 719100., 722150., 725200.,
      733275., 736350., 739425., 742500., 750700., 753800., 756900., 760000.,
      737625., 740850., 744075., 747300., 755450., 758700., 761950., 765200.,
      773475., 776750., 780025., 783300., 791700., 795000., 798300., 801600.};
  const std::array<int, 4> in_shape = {{1, 7, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2666.,  3670.,  4210.,  2541., 6620., 8550., 9200., 5350.,
      10940., 13750., 14400., 8230., 4670., 5710., 5950., 3207.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8225., 8875., 13425., 14075.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5206.,  5332.,  7160.,  7340.,  8210.,  8420.,  4947.,  5082.,
      12870., 13240., 16600., 17100., 17850., 18400., 10355., 10700.,
      21190., 21880., 26600., 27500., 27850., 28800., 15875., 16460.,
      8830.,  9340.,  10760., 11420., 11210., 11900., 5991.,  6414.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {15975., 16450., 17225., 17750.,
                                         25975., 26850., 27225., 28150.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10286., 10412., 10538., 10664., 14140., 14320., 14500., 14680.,
      16210., 16420., 16630., 16840., 9759.,  9894.,  10029., 10164.,
      25370., 25740., 26110., 26480., 32700., 33200., 33700., 34200.,
      35150., 35700., 36250., 36800., 20365., 20710., 21055., 21400.,
      41690., 42380., 43070., 43760., 52300., 53200., 54100., 55000.,
      54750., 55700., 56650., 57600., 31165., 31750., 32335., 32920.,
      17150., 17660., 18170., 18680., 20860., 21520., 22180., 22840.,
      21730., 22420., 23110., 23800., 11559., 11982., 12405., 12828.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31475., 31950., 32425., 32900., 33925., 34450., 34975., 35500.,
      51075., 51950., 52825., 53700., 53525., 54450., 55375., 56300.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9980.,  10664., 13795., 14680., 15895., 16840., 9597.,  10164.,
      25220., 26480., 32575., 34200., 35075., 36800., 20365., 21400.,
      41860., 43760., 52575., 55000., 55075., 57600., 31405., 32920.,
      17468., 18680., 21295., 22840., 22195., 23800., 11865., 12828.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {31325., 32900., 33825., 35500.,
                                         51325., 53700., 53825., 56300.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19720.,  19960.,  21076.,  21328.,  27245.,  27590.,  29000.,  29360.,
      31385.,  31790.,  33260.,  33680.,  18933.,  19194.,  20058.,  20328.,
      49720.,  50440.,  52220.,  52960.,  64175.,  65150.,  67400.,  68400.,
      69075.,  70150.,  72500.,  73600.,  40055.,  40730.,  42110.,  42800.,
      82360.,  83720.,  86140.,  87520.,  103375., 105150., 108200., 110000.,
      108275., 110150., 113300., 115200., 61655.,  62810.,  64670.,  65840.,
      33928.,  34936.,  36340.,  37360.,  41285.,  42590.,  44360.,  45680.,
      43025.,  44390.,  46220.,  47600.,  22893.,  23730.,  24810.,  25656.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      61725.,  62650.,  64850.,  65800.,  66625.,  67650.,  69950.,  71000.,
      100925., 102650., 105650., 107400., 105825., 107650., 110750., 112600.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      39200.,  39440.,  39680.,  39920.,  41900.,  42152.,  42404.,  42656.,
      54145.,  54490.,  54835.,  55180.,  57640.,  58000.,  58360.,  58720.,
      62365.,  62770.,  63175.,  63580.,  66100.,  66520.,  66940.,  67360.,
      37605.,  37866.,  38127.,  38388.,  39846.,  40116.,  40386.,  40656.,
      98720.,  99440.,  100160., 100880., 103700., 104440., 105180., 105920.,
      127375., 128350., 129325., 130300., 133800., 134800., 135800., 136800.,
      137075., 138150., 139225., 140300., 143900., 145000., 146100., 147200.,
      79435.,  80110.,  80785.,  81460.,  83530.,  84220.,  84910.,  85600.,
      163360., 164720., 166080., 167440., 170900., 172280., 173660., 175040.,
      204975., 206750., 208525., 210300., 214600., 216400., 218200., 220000.,
      214675., 216550., 218425., 220300., 224700., 226600., 228500., 230400.,
      122155., 123310., 124465., 125620., 128170., 129340., 130510., 131680.,
      66848.,  67856.,  68864.,  69872.,  71660.,  72680.,  73700.,  74720.,
      81265.,  82570.,  83875.,  85180.,  87400.,  88720.,  90040.,  91360.,
      84685.,  86050.,  87415.,  88780.,  91060.,  92440.,  93820.,  95200.,
      44949.,  45786.,  46623.,  47460.,  48774.,  49620.,  50466.,  51312.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122525., 123450., 124375., 125300., 128750., 129700., 130650., 131600.,
      132225., 133250., 134275., 135300., 138850., 139900., 140950., 142000.,
      200125., 201850., 203575., 205300., 209550., 211300., 213050., 214800.,
      209825., 211650., 213475., 215300., 219650., 221500., 223350., 225200.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38588.,  39920.,  41276.,  42656.,  53455.,  55180.,  56935.,  58720.,
      61735.,  63580.,  65455.,  67360.,  37281.,  38388.,  39513.,  40656.,
      98420.,  100880., 103380., 105920., 127125., 130300., 133525., 136800.,
      136925., 140300., 143725., 147200., 79435.,  81460.,  83515.,  85600.,
      163700., 167440., 171220., 175040., 205525., 210300., 215125., 220000.,
      215325., 220300., 225325., 230400., 122635., 125620., 128635., 131680.,
      67484.,  69872.,  72284.,  74720.,  82135.,  85180.,  88255.,  91360.,
      85615.,  88780.,  91975.,  95200.,  45561.,  47460.,  49377.,  51312.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122225., 125300., 128425., 131600., 132025., 135300., 138625., 142000.,
      200625., 205300., 210025., 214800., 210425., 215300., 220225., 225200.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      76708.,  77176.,  79360.,  79840.,  82060.,  82552.,  84808.,  85312.,
      106235., 106910., 109670., 110360., 113165., 113870., 116720., 117440.,
      122675., 123470., 126350., 127160., 130085., 130910., 133880., 134720.,
      74049.,  74562.,  76254.,  76776.,  78495.,  79026.,  80772.,  81312.,
      195420., 196840., 200320., 201760., 205300., 206760., 210360., 211840.,
      252325., 254250., 258650., 260600., 265075., 267050., 271600., 273600.,
      271725., 273850., 278450., 280600., 285275., 287450., 292200., 294400.,
      157535., 158870., 161570., 162920., 165665., 167030., 169820., 171200.,
      324700., 327400., 332160., 334880., 339700., 342440., 347320., 350080.,
      407525., 411050., 417050., 420600., 426675., 430250., 436400., 440000.,
      426925., 430650., 436850., 440600., 446875., 450650., 457000., 460800.,
      242975., 245270., 248930., 251240., 254945., 257270., 261020., 263360.,
      132964., 134968., 137728., 139744., 142540., 144568., 147400., 149440.,
      161675., 164270., 167750., 170360., 173885., 176510., 180080., 182720.,
      168515., 171230., 174830., 177560., 181205., 183950., 187640., 190400.,
      89457.,  91122.,  93246.,  94920.,  97071.,  98754.,  100932., 102624.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      242625., 244450., 248750., 250600., 254975., 256850., 261300., 263200.,
      262025., 264050., 268550., 270600., 275175., 277250., 281900., 284000.,
      397825., 401250., 407150., 410600., 416575., 420050., 426100., 429600.,
      417225., 420850., 426950., 430600., 436775., 440450., 446700., 450400.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      152948., 153416., 153884., 154352., 158240., 158720., 159200., 159680.,
      163628., 164120., 164612., 165104., 169112., 169616., 170120., 170624.,
      211795., 212470., 213145., 213820., 218650., 219340., 220030., 220720.,
      225625., 226330., 227035., 227740., 232720., 233440., 234160., 234880.,
      244555., 245350., 246145., 246940., 251890., 252700., 253510., 254320.,
      259345., 260170., 260995., 261820., 266920., 267760., 268600., 269440.,
      147585., 148098., 148611., 149124., 151986., 152508., 153030., 153552.,
      156459., 156990., 157521., 158052., 161004., 161544., 162084., 162624.,
      389420., 390840., 392260., 393680., 399200., 400640., 402080., 403520.,
      409140., 410600., 412060., 413520., 419240., 420720., 422200., 423680.,
      502725., 504650., 506575., 508500., 515350., 517300., 519250., 521200.,
      528175., 530150., 532125., 534100., 541200., 543200., 545200., 547200.,
      541325., 543450., 545575., 547700., 554750., 556900., 559050., 561200.,
      568375., 570550., 572725., 574900., 582200., 584400., 586600., 588800.,
      313735., 315070., 316405., 317740., 321790., 323140., 324490., 325840.,
      329965., 331330., 332695., 334060., 338260., 339640., 341020., 342400.,
      646700., 649400., 652100., 654800., 661600., 664320., 667040., 669760.,
      676660., 679400., 682140., 684880., 691880., 694640., 697400., 700160.,
      811525., 815050., 818575., 822100., 830550., 834100., 837650., 841200.,
      849775., 853350., 856925., 860500., 869200., 872800., 876400., 880000.,
      850125., 853850., 857575., 861300., 869950., 873700., 877450., 881200.,
      889975., 893750., 897525., 901300., 910200., 914000., 917800., 921600.,
      483655., 485950., 488245., 490540., 495550., 497860., 500170., 502480.,
      507565., 509890., 512215., 514540., 519700., 522040., 524380., 526720.,
      263924., 265928., 267932., 269936., 273440., 275456., 277472., 279488.,
      283052., 285080., 287108., 289136., 292760., 294800., 296840., 298880.,
      320755., 323350., 325945., 328540., 332890., 335500., 338110., 340720.,
      345145., 347770., 350395., 353020., 357520., 360160., 362800., 365440.,
      334315., 337030., 339745., 342460., 346930., 349660., 352390., 355120.,
      359665., 362410., 365155., 367900., 372520., 375280., 378040., 380800.,
      177249., 178914., 180579., 182244., 184818., 186492., 188166., 189840.,
      192459., 194142., 195825., 197508., 200172., 201864., 203556., 205248.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      483425., 485250., 487075., 488900., 495650., 497500., 499350., 501200.,
      508075., 509950., 511825., 513700., 520700., 522600., 524500., 526400.,
      522025., 524050., 526075., 528100., 535050., 537100., 539150., 541200.,
      548275., 550350., 552425., 554500., 561700., 563800., 565900., 568000.,
      792225., 795650., 799075., 802500., 810850., 814300., 817750., 821200.,
      829675., 833150., 836625., 840100., 848700., 852200., 855700., 859200.,
      830825., 834450., 838075., 841700., 850250., 853900., 857550., 861200.,
      869875., 873550., 877225., 880900., 889700., 893400., 897100., 900800.};
  const std::array<int, 4> in_shape = {{1, 7, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {3190.,  4310.,  4850.,  5390.,  3213.,
                                         8100.,  10350., 11000., 11650., 6730.,
                                         13500., 16850., 17500., 18150., 10330.,
                                         5770.,  7010.,  7250.,  7490.,  4023.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {10025., 10675., 11325.,
                                         16525., 17175., 17825.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6230.,  6380.,  8410.,  8620.,  9460.,  9700.,  10510., 10780.,
      6255.,  6426.,  15750., 16200., 20100., 20700., 21350., 22000.,
      22600., 23300., 13025., 13460., 26150., 27000., 32600., 33700.,
      33850., 35000., 35100., 36300., 19925., 20660., 10910., 11540.,
      13210., 14020., 13660., 14500., 14110., 14980., 7515.,  8046.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {19475., 20050., 20725., 21350.,
                                         21975., 22650., 31975., 33050.,
                                         33225., 34350., 34475., 35650.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12310., 12460., 12610., 12760., 16610., 16820., 17030., 17240., 18680.,
      18920., 19160., 19400., 20750., 21020., 21290., 21560., 12339., 12510.,
      12681., 12852., 31050., 31500., 31950., 32400., 39600., 40200., 40800.,
      41400., 42050., 42700., 43350., 44000., 44500., 45200., 45900., 46600.,
      25615., 26050., 26485., 26920., 51450., 52300., 53150., 54000., 64100.,
      65200., 66300., 67400., 66550., 67700., 68850., 70000., 69000., 70200.,
      71400., 72600., 39115., 39850., 40585., 41320., 21190., 21820., 22450.,
      23080., 25610., 26420., 27230., 28040., 26480., 27320., 28160., 29000.,
      27350., 28220., 29090., 29960., 14499., 15030., 15561., 16092.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38375., 38950., 39525., 40100., 40825., 41450., 42075., 42700.,
      43275., 43950., 44625., 45300., 62875., 63950., 65025., 66100.,
      65325., 66450., 67575., 68700., 67775., 68950., 70125., 71300.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12028., 12760., 16295., 17240., 18395., 19400., 20495., 21560.,
      12213., 12852., 30980., 32400., 39575., 41400., 42075., 44000.,
      44575., 46600., 25705., 26920., 51780., 54000., 64575., 67400.,
      67075., 70000., 69575., 72600., 39505., 41320., 21628., 23080.,
      26195., 28040., 27095., 29000., 27995., 29960., 14913., 16092.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {38325., 40100., 40825., 42700.,
                                         43325., 45300., 63325., 66100.,
                                         65825., 68700., 68325., 71300.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23768.,  24056.,  25220.,  25520.,  32185.,  32590.,  34060.,  34480.,
      36325.,  36790.,  38320.,  38800.,  40465.,  40990.,  42580.,  43120.,
      24093.,  24426.,  25362.,  25704.,  61080.,  61960.,  63900.,  64800.,
      77975.,  79150.,  81600.,  82800.,  82875.,  84150.,  86700.,  88000.,
      87775.,  89150.,  91800.,  93200.,  50555.,  51410.,  52970.,  53840.,
      101880., 103560., 106300., 108000., 126975., 129150., 132600., 134800.,
      131875., 134150., 137700., 140000., 136775., 139150., 142800., 145200.,
      77555.,  79010.,  81170.,  82640.,  42008.,  43256.,  44900.,  46160.,
      50785.,  52390.,  54460.,  56080.,  52525.,  54190.,  56320.,  58000.,
      54265.,  55990.,  58180.,  59920.,  28773.,  29826.,  31122.,  32184.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      75525.,  76650.,  79050.,  80200.,  80425.,  81650.,  84150.,  85400.,
      85325.,  86650.,  89250.,  90600.,  124525., 126650., 130050., 132200.,
      129425., 131650., 135150., 137400., 134325., 136650., 140250., 142600.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      47248.,  47536.,  47824.,  48112.,  50140.,  50440.,  50740.,  51040.,
      63965.,  64370.,  64775.,  65180.,  67700.,  68120.,  68540.,  68960.,
      72185.,  72650.,  73115.,  73580.,  76160.,  76640.,  77120.,  77600.,
      80405.,  80930.,  81455.,  81980.,  84620.,  85160.,  85700.,  86240.,
      47853.,  48186.,  48519.,  48852.,  50382.,  50724.,  51066.,  51408.,
      121280., 122160., 123040., 123920., 126900., 127800., 128700., 129600.,
      154775., 155950., 157125., 158300., 162000., 163200., 164400., 165600.,
      164475., 165750., 167025., 168300., 172100., 173400., 174700., 176000.,
      174175., 175550., 176925., 178300., 182200., 183600., 185000., 186400.,
      100255., 101110., 101965., 102820., 105070., 105940., 106810., 107680.,
      202080., 203760., 205440., 207120., 210900., 212600., 214300., 216000.,
      251775., 253950., 256125., 258300., 263000., 265200., 267400., 269600.,
      261475., 263750., 266025., 268300., 273100., 275400., 277700., 280000.,
      271175., 273550., 275925., 278300., 283200., 285600., 288000., 290400.,
      153655., 155110., 156565., 158020., 160870., 162340., 163810., 165280.,
      82768.,  84016.,  85264.,  86512.,  88540.,  89800.,  91060.,  92320.,
      99965.,  101570., 103175., 104780., 107300., 108920., 110540., 112160.,
      103385., 105050., 106715., 108380., 110960., 112640., 114320., 116000.,
      106805., 108530., 110255., 111980., 114620., 116360., 118100., 119840.,
      56493.,  57546.,  58599.,  59652.,  61182.,  62244.,  63306.,  64368.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      149925., 151050., 152175., 153300., 156950., 158100., 159250., 160400.,
      159625., 160850., 162075., 163300., 167050., 168300., 169550., 170800.,
      169325., 170650., 171975., 173300., 177150., 178500., 179850., 181200.,
      246925., 249050., 251175., 253300., 257950., 260100., 262250., 264400.,
      256625., 258850., 261075., 263300., 268050., 270300., 272550., 274800.,
      266325., 268650., 270975., 273300., 278150., 280500., 282850., 285200.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      46684.,  48112.,  49564.,  51040.,  63335.,  65180.,  67055.,  68960.,
      71615.,  73580.,  75575.,  77600.,  79895.,  81980.,  84095.,  86240.,
      47601.,  48852.,  50121.,  51408.,  121140., 123920., 126740., 129600.,
      154725., 158300., 161925., 165600., 164525., 168300., 172125., 176000.,
      174325., 178300., 182325., 186400., 100435., 102820., 105235., 107680.,
      202740., 207120., 211540., 216000., 252725., 258300., 263925., 269600.,
      262525., 268300., 274125., 280000., 272325., 278300., 284325., 290400.,
      154435., 158020., 161635., 165280., 83644.,  86512.,  89404.,  92320.,
      101135., 104780., 108455., 112160., 104615., 108380., 112175., 116000.,
      108095., 111980., 115895., 119840., 57321.,  59652.,  62001.,  64368.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      149825., 153300., 156825., 160400., 159625., 163300., 167025., 170800.,
      169425., 173300., 177225., 181200., 247825., 253300., 258825., 264400.,
      257625., 263300., 269025., 274800., 267425., 273300., 279225., 285200.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      92804.,  93368.,  95648.,  96224.,  98540.,  99128.,  101480., 102080.,
      125875., 126670., 129550., 130360., 133285., 134110., 137080., 137920.,
      142315., 143230., 146230., 147160., 150205., 151150., 154240., 155200.,
      158755., 159790., 162910., 163960., 167125., 168190., 171400., 172480.,
      94545.,  95202.,  97038.,  97704.,  99567.,  100242., 102132., 102816.,
      240540., 242280., 246080., 247840., 251700., 253480., 257400., 259200.,
      307125., 309450., 314250., 316600., 321475., 323850., 328800., 331200.,
      326525., 329050., 334050., 336600., 341675., 344250., 349400., 352000.,
      345925., 348650., 353850., 356600., 361875., 364650., 370000., 372800.,
      199175., 200870., 203930., 205640., 208745., 210470., 213620., 215360.,
      402140., 405480., 410880., 414240., 419700., 423080., 428600., 432000.,
      501125., 505450., 512250., 516600., 523475., 527850., 534800., 539200.,
      520525., 525050., 532050., 536600., 543675., 548250., 555400., 560000.,
      539925., 544650., 551850., 556600., 563875., 568650., 576000., 580800.,
      305975., 308870., 313130., 316040., 320345., 323270., 327620., 330560.,
      164804., 167288., 170528., 173024., 176300., 178808., 182120., 184640.,
      199075., 202270., 206350., 209560., 213685., 216910., 221080., 224320.,
      205915., 209230., 213430., 216760., 221005., 224350., 228640., 232000.,
      212755., 216190., 220510., 223960., 228325., 231790., 236200., 239680.,
      112545., 114642., 117198., 119304., 121887., 124002., 126612., 128736.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      297425., 299650., 304350., 306600., 311375., 313650., 318500., 320800.,
      316825., 319250., 324150., 326600., 331575., 334050., 339100., 341600.,
      336225., 338850., 343950., 346600., 351775., 354450., 359700., 362400.,
      491425., 495650., 502350., 506600., 513375., 517650., 524500., 528800.,
      510825., 515250., 522150., 526600., 533575., 538050., 545100., 549600.,
      530225., 534850., 541950., 546600., 553775., 558450., 565700., 570400.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x7x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      185044.,  185608.,  186172.,  186736.,  190720.,  191296.,  191872.,
      192448.,  196492.,  197080.,  197668.,  198256.,  202360.,  202960.,
      203560.,  204160.,  250955.,  251750.,  252545.,  253340.,  258290.,
      259100.,  259910.,  260720.,  265745.,  266570.,  267395.,  268220.,
      273320.,  274160.,  275000.,  275840.,  283715.,  284630.,  285545.,
      286460.,  291530.,  292460.,  293390.,  294320.,  299465.,  300410.,
      301355.,  302300.,  307520.,  308480.,  309440.,  310400.,  316475.,
      317510.,  318545.,  319580.,  324770.,  325820.,  326870.,  327920.,
      333185.,  334250.,  335315.,  336380.,  341720.,  342800.,  343880.,
      344960.,  188433.,  189090.,  189747.,  190404.,  193410.,  194076.,
      194742.,  195408.,  198459.,  199134.,  199809.,  200484.,  203580.,
      204264.,  204948.,  205632.,  479340.,  481080.,  482820.,  484560.,
      490400.,  492160.,  493920.,  495680.,  501620.,  503400.,  505180.,
      506960.,  513000.,  514800.,  516600.,  518400.,  611925.,  614250.,
      616575.,  618900.,  626150.,  628500.,  630850.,  633200.,  640575.,
      642950.,  645325.,  647700.,  655200.,  657600.,  660000.,  662400.,
      650525.,  653050.,  655575.,  658100.,  665550.,  668100.,  670650.,
      673200.,  680775.,  683350.,  685925.,  688500.,  696200.,  698800.,
      701400.,  704000.,  689125.,  691850.,  694575.,  697300.,  704950.,
      707700.,  710450.,  713200.,  720975.,  723750.,  726525.,  729300.,
      737200.,  740000.,  742800.,  745600.,  396655.,  398350.,  400045.,
      401740.,  406150.,  407860.,  409570.,  411280.,  415765.,  417490.,
      419215.,  420940.,  425500.,  427240.,  428980.,  430720.,  800940.,
      804280.,  807620.,  810960.,  818400.,  821760.,  825120.,  828480.,
      836020.,  839400.,  842780.,  846160.,  853800.,  857200.,  860600.,
      864000.,  997925.,  1002250., 1006575., 1010900., 1020150., 1024500.,
      1028850., 1033200., 1042575., 1046950., 1051325., 1055700., 1065200.,
      1069600., 1074000., 1078400., 1036525., 1041050., 1045575., 1050100.,
      1059550., 1064100., 1068650., 1073200., 1082775., 1087350., 1091925.,
      1096500., 1106200., 1110800., 1115400., 1120000., 1075125., 1079850.,
      1084575., 1089300., 1098950., 1103700., 1108450., 1113200., 1122975.,
      1127750., 1132525., 1137300., 1147200., 1152000., 1156800., 1161600.,
      609055.,  611950.,  614845.,  617740.,  623350.,  626260.,  629170.,
      632080.,  637765.,  640690.,  643615.,  646540.,  652300.,  655240.,
      658180.,  661120.,  327124.,  329608.,  332092.,  334576.,  338560.,
      341056.,  343552.,  346048.,  350092.,  352600.,  355108.,  357616.,
      361720.,  364240.,  366760.,  369280.,  394955.,  398150.,  401345.,
      404540.,  409490.,  412700.,  415910.,  419120.,  424145.,  427370.,
      430595.,  433820.,  438920.,  442160.,  445400.,  448640.,  408515.,
      411830.,  415145.,  418460.,  423530.,  426860.,  430190.,  433520.,
      438665.,  442010.,  445355.,  448700.,  453920.,  457280.,  460640.,
      464000.,  422075.,  425510.,  428945.,  432380.,  437570.,  441020.,
      444470.,  447920.,  453185.,  456650.,  460115.,  463580.,  468920.,
      472400.,  475880.,  479360.,  222993.,  225090.,  227187.,  229284.,
      232290.,  234396.,  236502.,  238608.,  241659.,  243774.,  245889.,
      248004.,  251100.,  253224.,  255348.,  257472.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x7x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      592625.,  594850.,  597075.,  599300.,  606450.,  608700.,  610950.,
      613200.,  620475.,  622750.,  625025.,  627300.,  634700.,  637000.,
      639300.,  641600.,  631225.,  633650.,  636075.,  638500.,  645850.,
      648300.,  650750.,  653200.,  660675.,  663150.,  665625.,  668100.,
      675700.,  678200.,  680700.,  683200.,  669825.,  672450.,  675075.,
      677700.,  685250.,  687900.,  690550.,  693200.,  700875.,  703550.,
      706225.,  708900.,  716700.,  719400.,  722100.,  724800.,  978625.,
      982850.,  987075.,  991300.,  1000450., 1004700., 1008950., 1013200.,
      1022475., 1026750., 1031025., 1035300., 1044700., 1049000., 1053300.,
      1057600., 1017225., 1021650., 1026075., 1030500., 1039850., 1044300.,
      1048750., 1053200., 1062675., 1067150., 1071625., 1076100., 1085700.,
      1090200., 1094700., 1099200., 1055825., 1060450., 1065075., 1069700.,
      1079250., 1083900., 1088550., 1093200., 1102875., 1107550., 1112225.,
      1116900., 1126700., 1131400., 1136100., 1140800.};
  const std::array<int, 4> in_shape = {{1, 7, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3008., 5100.,  5720.,  3404., 5890., 9600., 10250., 5920.,
      8830., 14150., 14800., 8440., 3780., 5780., 6020.,  3240.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7325., 7975., 11875., 12525.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5866.,  6016.,  9930.,  10200., 11130., 11440., 6610.,  6808.,
      11435., 11780., 18600., 19200., 19850., 20500., 11435., 11840.,
      17105., 17660., 27350., 28300., 28600., 29600., 16265., 16880.,
      7164.,  7560.,  10885., 11560., 11335., 12040., 6048.,  6480.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {14225., 14650., 15475., 15950.,
                                         22975., 23750., 24225., 25050.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11582., 11732., 11882., 12032., 19590., 19860., 20130., 20400.,
      21950., 22260., 22570., 22880., 13022., 13220., 13418., 13616.,
      22525., 22870., 23215., 23560., 36600., 37200., 37800., 38400.,
      39050., 39700., 40350., 41000., 22465., 22870., 23275., 23680.,
      33655., 34210., 34765., 35320., 53750., 54700., 55650., 56600.,
      56200., 57200., 58200., 59200., 31915., 32530., 33145., 33760.,
      13932., 14328., 14724., 15120., 21095., 21770., 22445., 23120.,
      21965., 22670., 23375., 24080., 11664., 12096., 12528., 12960.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28025., 28450., 28875., 29300., 30475., 30950., 31425., 31900.,
      45175., 45950., 46725., 47500., 47625., 48450., 49275., 50100.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11348., 12032., 19260., 20400., 21660., 22880., 12884., 13616.,
      22465., 23560., 36575., 38400., 39075., 41000., 22525., 23680.,
      33805., 35320., 54075., 56600., 56575., 59200., 32185., 33760.,
      14175., 15120., 21545., 23120., 22445., 24080., 11979., 12960.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {27825., 29300., 30325., 31900.,
                                         45325., 47500., 47825., 50100.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      22408.,  22696.,  23764.,  24064.,  38000.,  38520.,  40260.,  40800.,
      42720.,  43320.,  45140.,  45760.,  25384.,  25768.,  26836.,  27232.,
      44255.,  44930.,  46430.,  47120.,  71975.,  73150.,  75600.,  76800.,
      76875.,  78150.,  80700.,  82000.,  44255.,  45050.,  46550.,  47360.,
      66515.,  67610.,  69530.,  70640.,  106275., 108150., 111300., 113200.,
      111175., 113150., 116400., 118400., 63155.,  64370.,  66290.,  67520.,
      27567.,  28350.,  29448.,  30240.,  41755.,  43090.,  44890.,  46240.,
      43495.,  44890.,  46750.,  48160.,  23103.,  23958.,  25056.,  25920.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      54825., 55650., 57750., 58600., 59725., 60650., 62850., 63800.,
      89125., 90650., 93450., 95000., 94025., 95650., 98550., 100200.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      44528.,  44816.,  45104.,  45392.,  47228.,  47528.,  47828.,  48128.,
      75480.,  76000.,  76520.,  77040.,  79980.,  80520.,  81060.,  81600.,
      84840.,  85440.,  86040.,  86640.,  89660.,  90280.,  90900.,  91520.,
      50384.,  50768.,  51152.,  51536.,  53276.,  53672.,  54068.,  54464.,
      87835.,  88510.,  89185.,  89860.,  92170.,  92860.,  93550.,  94240.,
      142775., 143950., 145125., 146300., 150000., 151200., 152400., 153600.,
      152475., 153750., 155025., 156300., 160100., 161400., 162700., 164000.,
      87715.,  88510.,  89305.,  90100.,  92290.,  93100.,  93910.,  94720.,
      131935., 133030., 134125., 135220., 137950., 139060., 140170., 141280.,
      210675., 212550., 214425., 216300., 220700., 222600., 224500., 226400.,
      220375., 222350., 224325., 226300., 230800., 232800., 234800., 236800.,
      125095., 126310., 127525., 128740., 131350., 132580., 133810., 135040.,
      54351.,  55134.,  55917.,  56700.,  58104.,  58896.,  59688.,  60480.,
      82175.,  83510.,  84845.,  86180.,  88430.,  89780.,  91130.,  92480.,
      85595.,  86990.,  88385.,  89780.,  92090.,  93500.,  94910.,  96320.,
      45351.,  46206.,  47061.,  47916.,  49248.,  50112.,  50976.,  51840.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108825., 109650., 110475., 111300., 114650., 115500., 116350., 117200.,
      118525., 119450., 120375., 121300., 124750., 125700., 126650., 127600.,
      176725., 178250., 179775., 181300., 185350., 186900., 188450., 190000.,
      186425., 188050., 189675., 191300., 195450., 197100., 198750., 200400.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      44060.,  45392.,  46748.,  48128.,  74820.,  77040.,  79300.,  81600.,
      84260.,  86640.,  89060.,  91520.,  50108.,  51536.,  52988.,  54464.,
      87715.,  89860.,  92035.,  94240.,  142725., 146300., 149925., 153600.,
      152525., 156300., 160125., 164000., 87835.,  90100.,  92395.,  94720.,
      132235., 135220., 138235., 141280., 211325., 216300., 221325., 226400.,
      221125., 226300., 231525., 236800., 125635., 128740., 131875., 135040.,
      54837.,  56700.,  58581.,  60480.,  83075.,  86180.,  89315.,  92480.,
      86555.,  89780.,  93035.,  96320.,  45981.,  47916.,  49869.,  51840.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108425., 111300., 114225., 117200., 118225., 121300., 124425., 127600.,
      177025., 181300., 185625., 190000., 186825., 191300., 195825., 200400.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      87556.,  88120.,  90208.,  90784.,  92908.,  93496.,  95656.,  96256.,
      148620., 149640., 153040., 154080., 157540., 158600., 162120., 163200.,
      167340., 168520., 172080., 173280., 176900., 178120., 181800., 183040.,
      99460.,  100216., 102304., 103072., 105196., 105976., 108136., 108928.,
      174095., 175430., 178370., 179720., 182705., 184070., 187100., 188480.,
      283125., 285450., 290250., 292600., 297475., 299850., 304800., 307200.,
      302525., 305050., 310050., 312600., 317675., 320250., 325400., 328000.,
      174095., 175670., 178610., 180200., 183185., 184790., 187820., 189440.,
      262295., 264470., 268250., 270440., 274265., 276470., 280340., 282560.,
      418925., 422650., 428850., 432600., 438875., 442650., 449000., 452800.,
      438325., 442250., 448650., 452600., 459075., 463050., 469600., 473600.,
      248855., 251270., 255050., 257480., 261305., 263750., 267620., 270080.,
      108117., 109674., 111834., 113400., 115587., 117162., 119376., 120960.,
      163495., 166150., 169690., 172360., 175945., 178630., 182260., 184960.,
      170335., 173110., 176770., 179560., 183265., 186070., 189820., 192640.,
      90261.,  91962.,  94122.,  95832.,  98019.,  99738.,  101952., 103680.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      215225., 216850., 220950., 222600., 226775., 228450., 232700., 234400.,
      234625., 236450., 240750., 242600., 246975., 248850., 253300., 255200.,
      351025., 354050., 359550., 362600., 368175., 371250., 376900., 380000.,
      370425., 373650., 379350., 382600., 388375., 391650., 397500., 400800.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      174548., 175112., 175676., 176240., 179840., 180416., 180992., 181568.,
      185228., 185816., 186404., 186992., 190712., 191312., 191912., 192512.,
      296220., 297240., 298260., 299280., 305040., 306080., 307120., 308160.,
      314020., 315080., 316140., 317200., 323160., 324240., 325320., 326400.,
      333500., 334680., 335860., 337040., 342960., 344160., 345360., 346560.,
      352580., 353800., 355020., 356240., 362360., 363600., 364840., 366080.,
      198164., 198920., 199676., 200432., 203840., 204608., 205376., 206144.,
      209612., 210392., 211172., 211952., 215480., 216272., 217064., 217856.,
      346855., 348190., 349525., 350860., 355390., 356740., 358090., 359440.,
      364045., 365410., 366775., 368140., 372820., 374200., 375580., 376960.,
      563925., 566250., 568575., 570900., 578150., 580500., 582850., 585200.,
      592575., 594950., 597325., 599700., 607200., 609600., 612000., 614400.,
      602525., 605050., 607575., 610100., 617550., 620100., 622650., 625200.,
      632775., 635350., 637925., 640500., 648200., 650800., 653400., 656000.,
      346615., 348190., 349765., 351340., 355630., 357220., 358810., 360400.,
      364765., 366370., 367975., 369580., 374020., 375640., 377260., 378880.,
      522415., 524590., 526765., 528940., 534310., 536500., 538690., 540880.,
      546325., 548530., 550735., 552940., 558460., 560680., 562900., 565120.,
      834125., 837850., 841575., 845300., 853950., 857700., 861450., 865200.,
      873975., 877750., 881525., 885300., 894200., 898000., 901800., 905600.,
      872725., 876650., 880575., 884500., 893350., 897300., 901250., 905200.,
      914175., 918150., 922125., 926100., 935200., 939200., 943200., 947200.,
      495295., 497710., 500125., 502540., 507670., 510100., 512530., 514960.,
      520165., 522610., 525055., 527500., 532780., 535240., 537700., 540160.,
      214677., 216234., 217791., 219348., 222102., 223668., 225234., 226800.,
      229599., 231174., 232749., 234324., 237168., 238752., 240336., 241920.,
      324335., 326990., 329645., 332300., 336710., 339380., 342050., 344720.,
      349205., 351890., 354575., 357260., 361820., 364520., 367220., 369920.,
      337895., 340670., 343445., 346220., 350750., 353540., 356330., 359120.,
      363725., 366530., 369335., 372140., 376820., 379640., 382460., 385280.,
      178821., 180522., 182223., 183924., 186534., 188244., 189954., 191664.,
      194319., 196038., 197757., 199476., 202176., 203904., 205632., 207360.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      428825., 430450., 432075., 433700., 440250., 441900., 443550., 445200.,
      451875., 453550., 455225., 456900., 463700., 465400., 467100., 468800.,
      467425., 469250., 471075., 472900., 479650., 481500., 483350., 485200.,
      492075., 493950., 495825., 497700., 504700., 506600., 508500., 510400.,
      699025., 702050., 705075., 708100., 716050., 719100., 722150., 725200.,
      733275., 736350., 739425., 742500., 750700., 753800., 756900., 760000.,
      737625., 740850., 744075., 747300., 755450., 758700., 761950., 765200.,
      773475., 776750., 780025., 783300., 791700., 795000., 798300., 801600.};
  const std::array<int, 4> in_shape = {{1, 8, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4532.,  6000.,  6620.,  3914., 8780., 11150., 11800., 6790.,
      13100., 16350., 17000., 9670., 5486., 6670.,  6910.,  3711.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8225., 8875., 13425., 14075.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8832.,  9064.,  11680., 12000., 12880., 13240., 7600.,  7828.,
      17030., 17560., 21600., 22300., 22850., 23600., 13115., 13580.,
      25350., 26200., 31600., 32700., 32850., 34000., 18635., 19340.,
      10366., 10972., 12560., 13340., 13010., 13820., 6927.,  7422.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {15975., 16450., 17225., 17750.,
                                         25975., 26850., 27225., 28150.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17432., 17664., 17896., 18128., 23040., 23360., 23680., 24000.,
      25400., 25760., 26120., 26480., 14972., 15200., 15428., 15656.,
      33530., 34060., 34590., 35120., 42500., 43200., 43900., 44600.,
      44950., 45700., 46450., 47200., 25765., 26230., 26695., 27160.,
      49850., 50700., 51550., 52400., 62100., 63200., 64300., 65400.,
      64550., 65700., 66850., 68000., 36565., 37270., 37975., 38680.,
      20126., 20732., 21338., 21944., 24340., 25120., 25900., 26680.,
      25210., 26020., 26830., 27640., 13359., 13854., 14349., 14844.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31475., 31950., 32425., 32900., 33925., 34450., 34975., 35500.,
      51075., 51950., 52825., 53700., 53525., 54450., 55375., 56300.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17168., 18128., 22760., 24000., 25160., 26480., 14864., 15656.,
      33540., 35120., 42575., 44600., 45075., 47200., 25885., 27160.,
      50180., 52400., 62575., 65400., 65075., 68000., 36925., 38680.,
      20540., 21944., 24895., 26680., 25795., 27640., 13737., 14844.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {31325., 32900., 33825., 35500.,
                                         51325., 53700., 53825., 56300.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33888.,  34336.,  35792.,  36256.,  44900.,  45520.,  47360.,  48000.,
      49620.,  50320.,  52240.,  52960.,  29284.,  29728.,  30856.,  31312.,
      66040.,  67080.,  69180.,  70240.,  83775.,  85150.,  87800.,  89200.,
      88675.,  90150.,  92900.,  94400.,  50855.,  51770.,  53390.,  54320.,
      98680.,  100360., 103100., 104800., 122975., 125150., 128600., 130800.,
      127875., 130150., 133700., 136000., 72455.,  73850.,  75950.,  77360.,
      39880.,  41080.,  42676.,  43888.,  48245.,  49790.,  51800.,  53360.,
      49985.,  51590.,  53660.,  55280.,  26493.,  27474.,  28698.,  29688.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      61725.,  62650.,  64850.,  65800.,  66625.,  67650.,  69950.,  71000.,
      100925., 102650., 105650., 107400., 105825., 107650., 110750., 112600.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      67328.,  67776.,  68224.,  68672.,  71120.,  71584.,  72048.,  72512.,
      89180.,  89800.,  90420.,  91040.,  94080.,  94720.,  95360.,  96000.,
      98540.,  99240.,  99940.,  100640., 103760., 104480., 105200., 105920.,
      58124.,  58568.,  59012.,  59456.,  61256.,  61712.,  62168.,  62624.,
      131040., 132080., 133120., 134160., 137300., 138360., 139420., 140480.,
      166175., 167550., 168925., 170300., 174200., 175600., 177000., 178400.,
      175875., 177350., 178825., 180300., 184300., 185800., 187300., 188800.,
      100795., 101710., 102625., 103540., 105850., 106780., 107710., 108640.,
      195680., 197360., 199040., 200720., 204500., 206200., 207900., 209600.,
      243775., 245950., 248125., 250300., 255000., 257200., 259400., 261600.,
      253475., 255750., 258025., 260300., 265100., 267400., 269700., 272000.,
      143515., 144910., 146305., 147700., 150490., 151900., 153310., 154720.,
      78560.,  79760.,  80960.,  82160.,  84140.,  85352.,  86564.,  87776.,
      94945.,  96490.,  98035.,  99580.,  102040., 103600., 105160., 106720.,
      98365.,  99970.,  101575., 103180., 105700., 107320., 108940., 110560.,
      52005.,  52986.,  53967.,  54948.,  56406.,  57396.,  58386.,  59376.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122525., 123450., 124375., 125300., 128750., 129700., 130650., 131600.,
      132225., 133250., 134275., 135300., 138850., 139900., 140950., 142000.,
      200125., 201850., 203575., 205300., 209550., 211300., 213050., 214800.,
      209825., 211650., 213475., 215300., 219650., 221500., 223350., 225200.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      66800.,  68672.,  70576.,  72512.,  88620.,  91040.,  93500.,  96000.,
      98060.,  100640., 103260., 105920., 57908.,  59456.,  61028.,  62624.,
      131060., 134160., 137300., 140480., 166325., 170300., 174325., 178400.,
      176125., 180300., 184525., 188800., 101035., 103540., 106075., 108640.,
      196340., 200720., 205140., 209600., 244725., 250300., 255925., 261600.,
      254525., 260300., 266125., 272000., 144235., 147700., 151195., 154720.,
      79388.,  82160.,  84956.,  87776.,  96055.,  99580.,  103135., 106720.,
      99535.,  103180., 106855., 110560., 52761.,  54948.,  57153.,  59376.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122225., 125300., 128425., 131600., 132025., 135300., 138625., 142000.,
      200625., 205300., 210025., 214800., 210425., 215300., 220225., 225200.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      132720., 133600., 136448., 137344., 140240., 141152., 144096., 145024.,
      176020., 177240., 180840., 182080., 185740., 187000., 190720., 192000.,
      194740., 196120., 199880., 201280., 205100., 206520., 210400., 211840.,
      114940., 115816., 118024., 118912., 121156., 122056., 124336., 125248.,
      260060., 262120., 266240., 268320., 272500., 274600., 278840., 280960.,
      329925., 332650., 337850., 340600., 345875., 348650., 354000., 356800.,
      349325., 352250., 357650., 360600., 366075., 369050., 374600., 377600.,
      200255., 202070., 205250., 207080., 210305., 212150., 215420., 217280.,
      389340., 392680., 398080., 401440., 406900., 410280., 415800., 419200.,
      485125., 489450., 496250., 500600., 507475., 511850., 518800., 523200.,
      504525., 509050., 516050., 520600., 527675., 532250., 539400., 544000.,
      285695., 288470., 292610., 295400., 299585., 302390., 306620., 309440.,
      156388., 158776., 161920., 164320., 167500., 169912., 173128., 175552.,
      189035., 192110., 196070., 199160., 203165., 206270., 210320., 213440.,
      195875., 199070., 203150., 206360., 210485., 213710., 217880., 221120.,
      103569., 105522., 107934., 109896., 112335., 114306., 116772., 118752.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      242625., 244450., 248750., 250600., 254975., 256850., 261300., 263200.,
      262025., 264050., 268550., 270600., 275175., 277250., 281900., 284000.,
      397825., 401250., 407150., 410600., 416575., 420050., 426100., 429600.,
      417225., 420850., 426950., 430600., 436775., 440450., 446700., 450400.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      264560.,  265440.,  266320.,  267200.,  272000.,  272896.,  273792.,
      274688.,  279568.,  280480.,  281392.,  282304.,  287264.,  288192.,
      289120.,  290048.,  350820.,  352040.,  353260.,  354480.,  360440.,
      361680.,  362920.,  364160.,  370220.,  371480.,  372740.,  374000.,
      380160.,  381440.,  382720.,  384000.,  388100.,  389480.,  390860.,
      392240.,  398360.,  399760.,  401160.,  402560.,  408780.,  410200.,
      411620.,  413040.,  419360.,  420800.,  422240.,  423680.,  229004.,
      229880.,  230756.,  231632.,  235160.,  236048.,  236936.,  237824.,
      241412.,  242312.,  243212.,  244112.,  247760.,  248672.,  249584.,
      250496.,  518060.,  520120.,  522180.,  524240.,  530400.,  532480.,
      534560.,  536640.,  542900.,  545000.,  547100.,  549200.,  555560.,
      557680.,  559800.,  561920.,  657125.,  659850.,  662575.,  665300.,
      672950.,  675700.,  678450.,  681200.,  688975.,  691750.,  694525.,
      697300.,  705200.,  708000.,  710800.,  713600.,  695725.,  698650.,
      701575.,  704500.,  712350.,  715300.,  718250.,  721200.,  729175.,
      732150.,  735125.,  738100.,  746200.,  749200.,  752200.,  755200.,
      398695.,  400510.,  402325.,  404140.,  408670.,  410500.,  412330.,
      414160.,  418765.,  420610.,  422455.,  424300.,  428980.,  430840.,
      432700.,  434560.,  775340.,  778680.,  782020.,  785360.,  792800.,
      796160.,  799520.,  802880.,  810420.,  813800.,  817180.,  820560.,
      828200.,  831600.,  835000.,  838400.,  965925.,  970250.,  974575.,
      978900.,  988150.,  992500.,  996850.,  1001200., 1010575., 1014950.,
      1019325., 1023700., 1033200., 1037600., 1042000., 1046400., 1004525.,
      1009050., 1013575., 1018100., 1027550., 1032100., 1036650., 1041200.,
      1050775., 1055350., 1059925., 1064500., 1074200., 1078800., 1083400.,
      1088000., 568615.,  571390.,  574165.,  576940.,  582430.,  585220.,
      588010.,  590800.,  596365.,  599170.,  601975.,  604780.,  610420.,
      613240.,  616060.,  618880.,  310388.,  312776.,  315164.,  317552.,
      321440.,  323840.,  326240.,  328640.,  332588.,  335000.,  337412.,
      339824.,  343832.,  346256.,  348680.,  351104.,  374995.,  378070.,
      381145.,  384220.,  389050.,  392140.,  395230.,  398320.,  403225.,
      406330.,  409435.,  412540.,  417520.,  420640.,  423760.,  426880.,
      388555.,  391750.,  394945.,  398140.,  403090.,  406300.,  409510.,
      412720.,  417745.,  420970.,  424195.,  427420.,  432520.,  435760.,
      439000.,  442240.,  205185.,  207138.,  209091.,  211044.,  213906.,
      215868.,  217830.,  219792.,  222699.,  224670.,  226641.,  228612.,
      231564.,  233544.,  235524.,  237504.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      483425., 485250., 487075., 488900., 495650., 497500., 499350., 501200.,
      508075., 509950., 511825., 513700., 520700., 522600., 524500., 526400.,
      522025., 524050., 526075., 528100., 535050., 537100., 539150., 541200.,
      548275., 550350., 552425., 554500., 561700., 563800., 565900., 568000.,
      792225., 795650., 799075., 802500., 810850., 814300., 817750., 821200.,
      829675., 833150., 836625., 840100., 848700., 852200., 855700., 859200.,
      830825., 834450., 838075., 841700., 850250., 853900., 857550., 861200.,
      869875., 873550., 877225., 880900., 889700., 893400., 897100., 900800.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {5500.,  7180.,  7800.,  8420.,  4934.,
                                         10800., 13600., 14250., 14900., 8530.,
                                         16200., 20100., 20750., 21400., 12130.,
                                         6790.,  8210.,  8450.,  8690.,  4653.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {10025., 10675., 11325.,
                                         16525., 17175., 17825.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10720., 11000., 13980., 14360., 15180., 15600., 16380., 16840.,
      9580.,  9868.,  20950., 21600., 26350., 27200., 27600., 28500.,
      28850., 29800., 16475., 17060., 31350., 32400., 38850., 40200.,
      40100., 41500., 41350., 42800., 23375., 24260., 12830., 13580.,
      15460., 16420., 15910., 16900., 16360., 17380., 8685.,  9306.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {19475., 20050., 20725., 21350.,
                                         21975., 22650., 31975., 33050.,
                                         33225., 34350., 34475., 35650.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21160., 21440., 21720., 22000., 27580., 27960., 28340., 28720., 29940.,
      30360., 30780., 31200., 32300., 32760., 33220., 33680., 18872., 19160.,
      19448., 19736., 41250., 41900., 42550., 43200., 51850., 52700., 53550.,
      54400., 54300., 55200., 56100., 57000., 56750., 57700., 58650., 59600.,
      32365., 32950., 33535., 34120., 61650., 62700., 63750., 64800., 76350.,
      77700., 79050., 80400., 78800., 80200., 81600., 83000., 81250., 82700.,
      84150., 85600., 45865., 46750., 47635., 48520., 24910., 25660., 26410.,
      27160., 29960., 30920., 31880., 32840., 30830., 31820., 32810., 33800.,
      31700., 32720., 33740., 34760., 16749., 17370., 17991., 18612.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38375., 38950., 39525., 40100., 40825., 41450., 42075., 42700.,
      43275., 43950., 44625., 45300., 62875., 63950., 65025., 66100.,
      65325., 66450., 67575., 68700., 67775., 68950., 70125., 71300.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20944., 22000., 27360., 28720., 29760., 31200., 32160., 33680.,
      18824., 19736., 41380., 43200., 52075., 54400., 54575., 57000.,
      57075., 59600., 32605., 34120., 62180., 64800., 77075., 80400.,
      79575., 83000., 82075., 85600., 46405., 48520., 25468., 27160.,
      30695., 32840., 31595., 33800., 32495., 34760., 17253., 18612.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {38325., 40100., 40825., 42700.,
                                         43325., 45300., 63325., 66100.,
                                         65825., 68700., 68325., 71300.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41344.,  41888.,  43440.,  44000.,  53980.,  54720.,  56680.,  57440.,
      58700.,  59520.,  61560.,  62400.,  63420.,  64320.,  66440.,  67360.,
      37084.,  37648.,  38896.,  39472.,  81480.,  82760.,  85100.,  86400.,
      102475., 104150., 107100., 108800., 107375., 109150., 112200., 114000.,
      112275., 114150., 117300., 119200., 64055.,  65210.,  67070.,  68240.,
      122280., 124360., 127500., 129600., 151475., 154150., 158100., 160800.,
      156375., 159150., 163200., 166000., 161275., 164150., 168300., 171200.,
      91055.,  92810.,  95270.,  97040.,  49448.,  50936.,  52820.,  54320.,
      59485.,  61390.,  63760.,  65680.,  61225.,  63190.,  65620.,  67600.,
      62965.,  64990.,  67480.,  69520.,  33273.,  34506.,  35982.,  37224.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      75525.,  76650.,  79050.,  80200.,  80425.,  81650.,  84150.,  85400.,
      85325.,  86650.,  89250.,  90600.,  124525., 126650., 130050., 132200.,
      129425., 131650., 135150., 137400., 134325., 136650., 140250., 142600.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      82144.,  82688.,  83232.,  83776.,  86320.,  86880.,  87440.,  88000.,
      107220., 107960., 108700., 109440., 112600., 113360., 114120., 114880.,
      116580., 117400., 118220., 119040., 122280., 123120., 123960., 124800.,
      125940., 126840., 127740., 128640., 131960., 132880., 133800., 134720.,
      73604.,  74168.,  74732.,  75296.,  77216.,  77792.,  78368.,  78944.,
      161680., 162960., 164240., 165520., 168900., 170200., 171500., 172800.,
      203275., 204950., 206625., 208300., 212500., 214200., 215900., 217600.,
      212975., 214750., 216525., 218300., 222600., 224400., 226200., 228000.,
      222675., 224550., 226425., 228300., 232700., 234600., 236500., 238400.,
      126955., 128110., 129265., 130420., 132970., 134140., 135310., 136480.,
      242480., 244560., 246640., 248720., 252900., 255000., 257100., 259200.,
      300275., 302950., 305625., 308300., 313500., 316200., 318900., 321600.,
      309975., 312750., 315525., 318300., 323600., 326400., 329200., 332000.,
      319675., 322550., 325425., 328300., 333700., 336600., 339500., 342400.,
      180355., 182110., 183865., 185620., 188770., 190540., 192310., 194080.,
      97408.,  98896.,  100384., 101872., 104140., 105640., 107140., 108640.,
      117065., 118970., 120875., 122780., 125600., 127520., 129440., 131360.,
      120485., 122450., 124415., 126380., 129260., 131240., 133220., 135200.,
      123905., 125930., 127955., 129980., 132920., 134960., 137000., 139040.,
      65313.,  66546.,  67779.,  69012.,  70722.,  71964.,  73206.,  74448.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      149925., 151050., 152175., 153300., 156950., 158100., 159250., 160400.,
      159625., 160850., 162075., 163300., 167050., 168300., 169550., 170800.,
      169325., 170650., 171975., 173300., 177150., 178500., 179850., 181200.,
      246925., 249050., 251175., 253300., 257950., 260100., 262250., 264400.,
      256625., 258850., 261075., 263300., 268050., 270300., 272550., 274800.,
      266325., 268650., 270975., 273300., 278150., 280500., 282850., 285200.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      81712.,  83776.,  85872.,  88000.,  106780., 109440., 112140., 114880.,
      116220., 119040., 121900., 124800., 125660., 128640., 131660., 134720.,
      73508.,  75296.,  77108.,  78944.,  161940., 165520., 169140., 172800.,
      203725., 208300., 212925., 217600., 213525., 218300., 223125., 228000.,
      223325., 228300., 233325., 238400., 127435., 130420., 133435., 136480.,
      243540., 248720., 253940., 259200., 301725., 308300., 314925., 321600.,
      311525., 318300., 325125., 332000., 321325., 328300., 335325., 342400.,
      181435., 185620., 189835., 194080., 98524.,  101872., 105244., 108640.,
      118535., 122780., 127055., 131360., 122015., 126380., 130775., 135200.,
      125495., 129980., 134495., 139040., 66321.,  69012.,  71721.,  74448.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      149825., 153300., 156825., 160400., 159625., 163300., 167025., 170800.,
      169425., 173300., 177225., 181200., 247825., 253300., 258825., 264400.,
      257625., 263300., 269025., 274800., 267425., 273300., 279225., 285200.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      162352., 163424., 166464., 167552., 170640., 171744., 174880., 176000.,
      212100., 213560., 217400., 218880., 222780., 224280., 228240., 229760.,
      230820., 232440., 236440., 238080., 242140., 243800., 247920., 249600.,
      249540., 251320., 255480., 257280., 261500., 263320., 267600., 269440.,
      145900., 147016., 149464., 150592., 153076., 154216., 156736., 157888.,
      321340., 323880., 328480., 331040., 335700., 338280., 343000., 345600.,
      404125., 407450., 413250., 416600., 422475., 425850., 431800., 435200.,
      423525., 427050., 433050., 436600., 442675., 446250., 452400., 456000.,
      442925., 446650., 452850., 456600., 462875., 466650., 473000., 476800.,
      252575., 254870., 258530., 260840., 264545., 266870., 270620., 272960.,
      482940., 487080., 493280., 497440., 503700., 507880., 514200., 518400.,
      598125., 603450., 611250., 616600., 624475., 629850., 637800., 643200.,
      617525., 623050., 631050., 636600., 644675., 650250., 658400., 664000.,
      636925., 642650., 650850., 656600., 664875., 670650., 679000., 684800.,
      359375., 362870., 367730., 371240., 376145., 379670., 384620., 388160.,
      194084., 197048., 200768., 203744., 207500., 210488., 214280., 217280.,
      233275., 237070., 241750., 245560., 250285., 254110., 258880., 262720.,
      240115., 244030., 248830., 252760., 257605., 261550., 266440., 270400.,
      246955., 250990., 255910., 259960., 264925., 268990., 274000., 278080.,
      130185., 132642., 135558., 138024., 140967., 143442., 146412., 148896.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      297425., 299650., 304350., 306600., 311375., 313650., 318500., 320800.,
      316825., 319250., 324150., 326600., 331575., 334050., 339100., 341600.,
      336225., 338850., 343950., 346600., 351775., 354450., 359700., 362400.,
      491425., 495650., 502350., 506600., 513375., 517650., 524500., 528800.,
      510825., 515250., 522150., 526600., 533575., 538050., 545100., 549600.,
      530225., 534850., 541950., 546600., 553775., 558450., 565700., 570400.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x8x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      323632.,  324704.,  325776.,  326848.,  331840.,  332928.,  334016.,
      335104.,  340176.,  341280.,  342384.,  343488.,  348640.,  349760.,
      350880.,  352000.,  422740.,  424200.,  425660.,  427120.,  433320.,
      434800.,  436280.,  437760.,  444060.,  445560.,  447060.,  448560.,
      454960.,  456480.,  458000.,  459520.,  460020.,  461640.,  463260.,
      464880.,  471240.,  472880.,  474520.,  476160.,  482620.,  484280.,
      485940.,  487600.,  494160.,  495840.,  497520.,  499200.,  497300.,
      499080.,  500860.,  502640.,  509160.,  510960.,  512760.,  514560.,
      521180.,  523000.,  524820.,  526640.,  533360.,  535200.,  537040.,
      538880.,  290684.,  291800.,  292916.,  294032.,  297800.,  298928.,
      300056.,  301184.,  305012.,  306152.,  307292.,  308432.,  312320.,
      313472.,  314624.,  315776.,  640140.,  642680.,  645220.,  647760.,
      654400.,  656960.,  659520.,  662080.,  668820.,  671400.,  673980.,
      676560.,  683400.,  686000.,  688600.,  691200.,  804925.,  808250.,
      811575.,  814900.,  823150.,  826500.,  829850.,  833200.,  841575.,
      844950.,  848325.,  851700.,  860200.,  863600.,  867000.,  870400.,
      843525.,  847050.,  850575.,  854100.,  862550.,  866100.,  869650.,
      873200.,  881775.,  885350.,  888925.,  892500.,  901200.,  904800.,
      908400.,  912000.,  882125.,  885850.,  889575.,  893300.,  901950.,
      905700.,  909450.,  913200.,  921975.,  925750.,  929525.,  933300.,
      942200.,  946000.,  949800.,  953600.,  502855.,  505150.,  507445.,
      509740.,  514750.,  517060.,  519370.,  521680.,  526765.,  529090.,
      531415.,  533740.,  538900.,  541240.,  543580.,  545920.,  961740.,
      965880.,  970020.,  974160.,  982400.,  986560.,  990720.,  994880.,
      1003220., 1007400., 1011580., 1015760., 1024200., 1028400., 1032600.,
      1036800., 1190925., 1196250., 1201575., 1206900., 1217150., 1222500.,
      1227850., 1233200., 1243575., 1248950., 1254325., 1259700., 1270200.,
      1275600., 1281000., 1286400., 1229525., 1235050., 1240575., 1246100.,
      1256550., 1262100., 1267650., 1273200., 1283775., 1289350., 1294925.,
      1300500., 1311200., 1316800., 1322400., 1328000., 1268125., 1273850.,
      1279575., 1285300., 1295950., 1301700., 1307450., 1313200., 1323975.,
      1329750., 1335525., 1341300., 1352200., 1358000., 1363800., 1369600.,
      715255.,  718750.,  722245.,  725740.,  731950.,  735460.,  738970.,
      742480.,  748765.,  752290.,  755815.,  759340.,  765700.,  769240.,
      772780.,  776320.,  385204.,  388168.,  391132.,  394096.,  398560.,
      401536.,  404512.,  407488.,  412012.,  415000.,  417988.,  420976.,
      425560.,  428560.,  431560.,  434560.,  462755.,  466550.,  470345.,
      474140.,  479690.,  483500.,  487310.,  491120.,  496745.,  500570.,
      504395.,  508220.,  513920.,  517760.,  521600.,  525440.,  476315.,
      480230.,  484145.,  488060.,  493730.,  497660.,  501590.,  505520.,
      511265.,  515210.,  519155.,  523100.,  528920.,  532880.,  536840.,
      540800.,  489875.,  493910.,  497945.,  501980.,  507770.,  511820.,
      515870.,  519920.,  525785.,  529850.,  533915.,  537980.,  543920.,
      548000.,  552080.,  556160.,  257913.,  260370.,  262827.,  265284.,
      268650.,  271116.,  273582.,  276048.,  279459.,  281934.,  284409.,
      286884.,  290340.,  292824.,  295308.,  297792.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x8x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      592625.,  594850.,  597075.,  599300.,  606450.,  608700.,  610950.,
      613200.,  620475.,  622750.,  625025.,  627300.,  634700.,  637000.,
      639300.,  641600.,  631225.,  633650.,  636075.,  638500.,  645850.,
      648300.,  650750.,  653200.,  660675.,  663150.,  665625.,  668100.,
      675700.,  678200.,  680700.,  683200.,  669825.,  672450.,  675075.,
      677700.,  685250.,  687900.,  690550.,  693200.,  700875.,  703550.,
      706225.,  708900.,  716700.,  719400.,  722100.,  724800.,  978625.,
      982850.,  987075.,  991300.,  1000450., 1004700., 1008950., 1013200.,
      1022475., 1026750., 1031025., 1035300., 1044700., 1049000., 1053300.,
      1057600., 1017225., 1021650., 1026075., 1030500., 1039850., 1044300.,
      1048750., 1053200., 1062675., 1067150., 1071625., 1076100., 1085700.,
      1090200., 1094700., 1099200., 1055825., 1060450., 1065075., 1069700.,
      1079250., 1083900., 1088550., 1093200., 1102875., 1107550., 1112225.,
      1116900., 1126700., 1131400., 1136100., 1140800.};
  const std::array<int, 4> in_shape = {{1, 8, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {3008.,  5100.,  5720.,  3404.,  5890.,
                                         9600.,  10250., 5920.,  8830.,  14150.,
                                         14800., 8440.,  11770., 18700., 19350.,
                                         10960., 4914.,  7460.,  7700.,  4122.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7325.,  7975.,  11875.,
                                         12525., 16425., 17075.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5866.,  6016.,  9930.,  10200., 11130., 11440., 6610.,  6808.,
      11435., 11780., 18600., 19200., 19850., 20500., 11435., 11840.,
      17105., 17660., 27350., 28300., 28600., 29600., 16265., 16880.,
      22775., 23540., 36100., 37400., 37350., 38700., 21095., 21920.,
      9306.,  9828.,  14035., 14920., 14485., 15400., 7686.,  8244.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {14225., 14650., 15475., 15950.,
                                         22975., 23750., 24225., 25050.,
                                         31725., 32850., 32975., 34150.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11582., 11732., 11882., 12032., 19590., 19860., 20130., 20400., 21950.,
      22260., 22570., 22880., 13022., 13220., 13418., 13616., 22525., 22870.,
      23215., 23560., 36600., 37200., 37800., 38400., 39050., 39700., 40350.,
      41000., 22465., 22870., 23275., 23680., 33655., 34210., 34765., 35320.,
      53750., 54700., 55650., 56600., 56200., 57200., 58200., 59200., 31915.,
      32530., 33145., 33760., 44785., 45550., 46315., 47080., 70900., 72200.,
      73500., 74800., 73350., 74700., 76050., 77400., 41365., 42190., 43015.,
      43840., 18090., 18612., 19134., 19656., 27185., 28070., 28955., 29840.,
      28055., 28970., 29885., 30800., 14814., 15372., 15930., 16488.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28025., 28450., 28875., 29300., 30475., 30950., 31425., 31900.,
      45175., 45950., 46725., 47500., 47625., 48450., 49275., 50100.,
      62325., 63450., 64575., 65700., 64775., 65950., 67125., 68300.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11348., 12032., 19260., 20400., 21660., 22880., 12884., 13616.,
      22465., 23560., 36575., 38400., 39075., 41000., 22525., 23680.,
      33805., 35320., 54075., 56600., 56575., 59200., 32185., 33760.,
      45145., 47080., 71575., 74800., 74075., 77400., 41845., 43840.,
      18459., 19656., 27845., 29840., 28745., 30800., 15255., 16488.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {27825., 29300., 30325., 31900.,
                                         45325., 47500., 47825., 50100.,
                                         62825., 65700., 65325., 68300.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      22408.,  22696.,  23764.,  24064.,  38000.,  38520.,  40260.,  40800.,
      42720.,  43320.,  45140.,  45760.,  25384.,  25768.,  26836.,  27232.,
      44255.,  44930.,  46430.,  47120.,  71975.,  73150.,  75600.,  76800.,
      76875.,  78150.,  80700.,  82000.,  44255.,  45050.,  46550.,  47360.,
      66515.,  67610.,  69530.,  70640.,  106275., 108150., 111300., 113200.,
      111175., 113150., 116400., 118400., 63155.,  64370.,  66290.,  67520.,
      88775.,  90290.,  92630.,  94160.,  140575., 143150., 147000., 149600.,
      145475., 148150., 152100., 154800., 82055.,  83690.,  86030.,  87680.,
      35883.,  36918.,  38268.,  39312.,  53935.,  55690.,  57910.,  59680.,
      55675.,  57490.,  59770.,  61600.,  29403.,  30510.,  31860.,  32976.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      54825.,  55650.,  57750.,  58600.,  59725.,  60650.,  62850.,  63800.,
      89125.,  90650.,  93450.,  95000.,  94025.,  95650.,  98550.,  100200.,
      123425., 125650., 129150., 131400., 128325., 130650., 134250., 136600.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      44528.,  44816.,  45104.,  45392.,  47228.,  47528.,  47828.,  48128.,
      75480.,  76000.,  76520.,  77040.,  79980.,  80520.,  81060.,  81600.,
      84840.,  85440.,  86040.,  86640.,  89660.,  90280.,  90900.,  91520.,
      50384.,  50768.,  51152.,  51536.,  53276.,  53672.,  54068.,  54464.,
      87835.,  88510.,  89185.,  89860.,  92170.,  92860.,  93550.,  94240.,
      142775., 143950., 145125., 146300., 150000., 151200., 152400., 153600.,
      152475., 153750., 155025., 156300., 160100., 161400., 162700., 164000.,
      87715.,  88510.,  89305.,  90100.,  92290.,  93100.,  93910.,  94720.,
      131935., 133030., 134125., 135220., 137950., 139060., 140170., 141280.,
      210675., 212550., 214425., 216300., 220700., 222600., 224500., 226400.,
      220375., 222350., 224325., 226300., 230800., 232800., 234800., 236800.,
      125095., 126310., 127525., 128740., 131350., 132580., 133810., 135040.,
      176035., 177550., 179065., 180580., 183730., 185260., 186790., 188320.,
      278575., 281150., 283725., 286300., 291400., 294000., 296600., 299200.,
      288275., 290950., 293625., 296300., 301500., 304200., 306900., 309600.,
      162475., 164110., 165745., 167380., 170410., 172060., 173710., 175360.,
      70731.,  71766.,  72801.,  73836.,  75492.,  76536.,  77580.,  78624.,
      106115., 107870., 109625., 111380., 114050., 115820., 117590., 119360.,
      109535., 111350., 113165., 114980., 117710., 119540., 121370., 123200.,
      57699.,  58806.,  59913.,  61020.,  62604.,  63720.,  64836.,  65952.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108825., 109650., 110475., 111300., 114650., 115500., 116350., 117200.,
      118525., 119450., 120375., 121300., 124750., 125700., 126650., 127600.,
      176725., 178250., 179775., 181300., 185350., 186900., 188450., 190000.,
      186425., 188050., 189675., 191300., 195450., 197100., 198750., 200400.,
      244625., 246850., 249075., 251300., 256050., 258300., 260550., 262800.,
      254325., 256650., 258975., 261300., 266150., 268500., 270850., 273200.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      44060.,  45392.,  46748.,  48128.,  74820.,  77040.,  79300.,  81600.,
      84260.,  86640.,  89060.,  91520.,  50108.,  51536.,  52988.,  54464.,
      87715.,  89860.,  92035.,  94240.,  142725., 146300., 149925., 153600.,
      152525., 156300., 160125., 164000., 87835.,  90100.,  92395.,  94720.,
      132235., 135220., 138235., 141280., 211325., 216300., 221325., 226400.,
      221125., 226300., 231525., 236800., 125635., 128740., 131875., 135040.,
      176755., 180580., 184435., 188320., 279925., 286300., 292725., 299200.,
      289725., 296300., 302925., 309600., 163435., 167380., 171355., 175360.,
      71469.,  73836.,  76221.,  78624.,  107435., 111380., 115355., 119360.,
      110915., 114980., 119075., 123200., 58581.,  61020.,  63477.,  65952.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108425., 111300., 114225., 117200., 118225., 121300., 124425., 127600.,
      177025., 181300., 185625., 190000., 186825., 191300., 195825., 200400.,
      245625., 251300., 257025., 262800., 255425., 261300., 267225., 273200.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      87556.,  88120.,  90208.,  90784.,  92908.,  93496.,  95656.,  96256.,
      148620., 149640., 153040., 154080., 157540., 158600., 162120., 163200.,
      167340., 168520., 172080., 173280., 176900., 178120., 181800., 183040.,
      99460.,  100216., 102304., 103072., 105196., 105976., 108136., 108928.,
      174095., 175430., 178370., 179720., 182705., 184070., 187100., 188480.,
      283125., 285450., 290250., 292600., 297475., 299850., 304800., 307200.,
      302525., 305050., 310050., 312600., 317675., 320250., 325400., 328000.,
      174095., 175670., 178610., 180200., 183185., 184790., 187820., 189440.,
      262295., 264470., 268250., 270440., 274265., 276470., 280340., 282560.,
      418925., 422650., 428850., 432600., 438875., 442650., 449000., 452800.,
      438325., 442250., 448650., 452600., 459075., 463050., 469600., 473600.,
      248855., 251270., 255050., 257480., 261305., 263750., 267620., 270080.,
      350495., 353510., 358130., 361160., 365825., 368870., 373580., 376640.,
      554725., 559850., 567450., 572600., 580275., 585450., 593200., 598400.,
      574125., 579450., 587250., 592600., 600475., 605850., 613800., 619200.,
      323615., 326870., 331490., 334760., 339425., 342710., 347420., 350720.,
      140877., 142938., 145602., 147672., 150363., 152442., 155160., 157248.,
      211375., 214870., 219250., 222760., 227185., 230710., 235180., 238720.,
      218215., 221830., 226330., 229960., 234505., 238150., 242740., 246400.,
      114957., 117162., 119826., 122040., 124731., 126954., 129672., 131904.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      215225., 216850., 220950., 222600., 226775., 228450., 232700., 234400.,
      234625., 236450., 240750., 242600., 246975., 248850., 253300., 255200.,
      351025., 354050., 359550., 362600., 368175., 371250., 376900., 380000.,
      370425., 373650., 379350., 382600., 388375., 391650., 397500., 400800.,
      486825., 491250., 498150., 502600., 509575., 514050., 521100., 525600.,
      506225., 510850., 517950., 522600., 529775., 534450., 541700., 546400.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      174548.,  175112.,  175676.,  176240.,  179840.,  180416.,  180992.,
      181568.,  185228.,  185816.,  186404.,  186992.,  190712.,  191312.,
      191912.,  192512.,  296220.,  297240.,  298260.,  299280.,  305040.,
      306080.,  307120.,  308160.,  314020.,  315080.,  316140.,  317200.,
      323160.,  324240.,  325320.,  326400.,  333500.,  334680.,  335860.,
      337040.,  342960.,  344160.,  345360.,  346560.,  352580.,  353800.,
      355020.,  356240.,  362360.,  363600.,  364840.,  366080.,  198164.,
      198920.,  199676.,  200432.,  203840.,  204608.,  205376.,  206144.,
      209612.,  210392.,  211172.,  211952.,  215480.,  216272.,  217064.,
      217856.,  346855.,  348190.,  349525.,  350860.,  355390.,  356740.,
      358090.,  359440.,  364045.,  365410.,  366775.,  368140.,  372820.,
      374200.,  375580.,  376960.,  563925.,  566250.,  568575.,  570900.,
      578150.,  580500.,  582850.,  585200.,  592575.,  594950.,  597325.,
      599700.,  607200.,  609600.,  612000.,  614400.,  602525.,  605050.,
      607575.,  610100.,  617550.,  620100.,  622650.,  625200.,  632775.,
      635350.,  637925.,  640500.,  648200.,  650800.,  653400.,  656000.,
      346615.,  348190.,  349765.,  351340.,  355630.,  357220.,  358810.,
      360400.,  364765.,  366370.,  367975.,  369580.,  374020.,  375640.,
      377260.,  378880.,  522415.,  524590.,  526765.,  528940.,  534310.,
      536500.,  538690.,  540880.,  546325.,  548530.,  550735.,  552940.,
      558460.,  560680.,  562900.,  565120.,  834125.,  837850.,  841575.,
      845300.,  853950.,  857700.,  861450.,  865200.,  873975.,  877750.,
      881525.,  885300.,  894200.,  898000.,  901800.,  905600.,  872725.,
      876650.,  880575.,  884500.,  893350.,  897300.,  901250.,  905200.,
      914175.,  918150.,  922125.,  926100.,  935200.,  939200.,  943200.,
      947200.,  495295.,  497710.,  500125.,  502540.,  507670.,  510100.,
      512530.,  514960.,  520165.,  522610.,  525055.,  527500.,  532780.,
      535240.,  537700.,  540160.,  697975.,  700990.,  704005.,  707020.,
      713230.,  716260.,  719290.,  722320.,  728605.,  731650.,  734695.,
      737740.,  744100.,  747160.,  750220.,  753280.,  1104325., 1109450.,
      1114575., 1119700., 1129750., 1134900., 1140050., 1145200., 1155375.,
      1160550., 1165725., 1170900., 1181200., 1186400., 1191600., 1196800.,
      1142925., 1148250., 1153575., 1158900., 1169150., 1174500., 1179850.,
      1185200., 1195575., 1200950., 1206325., 1211700., 1222200., 1227600.,
      1233000., 1238400., 643975.,  647230.,  650485.,  653740.,  659710.,
      662980.,  666250.,  669520.,  675565.,  678850.,  682135.,  685420.,
      691540.,  694840.,  698140.,  701440.,  279693.,  281754.,  283815.,
      285876.,  289134.,  291204.,  293274.,  295344.,  298647.,  300726.,
      302805.,  304884.,  308232.,  310320.,  312408.,  314496.,  419255.,
      422750.,  426245.,  429740.,  434990.,  438500.,  442010.,  445520.,
      450845.,  454370.,  457895.,  461420.,  466820.,  470360.,  473900.,
      477440.,  432815.,  436430.,  440045.,  443660.,  449030.,  452660.,
      456290.,  459920.,  465365.,  469010.,  472655.,  476300.,  481820.,
      485480.,  489140.,  492800.,  227709.,  229914.,  232119.,  234324.,
      237438.,  239652.,  241866.,  244080.,  247239.,  249462.,  251685.,
      253908.,  257112.,  259344.,  261576.,  263808.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      428825.,  430450.,  432075.,  433700.,  440250.,  441900.,  443550.,
      445200.,  451875.,  453550.,  455225.,  456900.,  463700.,  465400.,
      467100.,  468800.,  467425.,  469250.,  471075.,  472900.,  479650.,
      481500.,  483350.,  485200.,  492075.,  493950.,  495825.,  497700.,
      504700.,  506600.,  508500.,  510400.,  699025.,  702050.,  705075.,
      708100.,  716050.,  719100.,  722150.,  725200.,  733275.,  736350.,
      739425.,  742500.,  750700.,  753800.,  756900.,  760000.,  737625.,
      740850.,  744075.,  747300.,  755450.,  758700.,  761950.,  765200.,
      773475.,  776750.,  780025.,  783300.,  791700.,  795000.,  798300.,
      801600.,  969225.,  973650.,  978075.,  982500.,  991850.,  996300.,
      1000750., 1005200., 1014675., 1019150., 1023625., 1028100., 1037700.,
      1042200., 1046700., 1051200., 1007825., 1012450., 1017075., 1021700.,
      1031250., 1035900., 1040550., 1045200., 1054875., 1059550., 1064225.,
      1068900., 1078700., 1083400., 1088100., 1092800.};
  const std::array<int, 4> in_shape = {{1, 10, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {4532.,  6000.,  6620.,  3914.,  8780.,
                                         11150., 11800., 6790.,  13100., 16350.,
                                         17000., 9670.,  17420., 21550., 22200.,
                                         12550., 7118.,  8590.,  8830.,  4719.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8225.,  8875.,  13425.,
                                         14075., 18625., 19275.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8832.,  9064.,  11680., 12000., 12880., 13240., 7600.,  7828.,
      17030., 17560., 21600., 22300., 22850., 23600., 13115., 13580.,
      25350., 26200., 31600., 32700., 32850., 34000., 18635., 19340.,
      33670., 34840., 41600., 43100., 42850., 44400., 24155., 25100.,
      13438., 14236., 16160., 17180., 16610., 17660., 8799.,  9438.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {15975., 16450., 17225., 17750.,
                                         25975., 26850., 27225., 28150.,
                                         35975., 37250., 37225., 38550.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17432., 17664., 17896., 18128., 23040., 23360., 23680., 24000., 25400.,
      25760., 26120., 26480., 14972., 15200., 15428., 15656., 33530., 34060.,
      34590., 35120., 42500., 43200., 43900., 44600., 44950., 45700., 46450.,
      47200., 25765., 26230., 26695., 27160., 49850., 50700., 51550., 52400.,
      62100., 63200., 64300., 65400., 64550., 65700., 66850., 68000., 36565.,
      37270., 37975., 38680., 66170., 67340., 68510., 69680., 81700., 83200.,
      84700., 86200., 84150., 85700., 87250., 88800., 47365., 48310., 49255.,
      50200., 26078., 26876., 27674., 28472., 31300., 32320., 33340., 34360.,
      32170., 33220., 34270., 35320., 16959., 17598., 18237., 18876.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31475., 31950., 32425., 32900., 33925., 34450., 34975., 35500.,
      51075., 51950., 52825., 53700., 53525., 54450., 55375., 56300.,
      70675., 71950., 73225., 74500., 73125., 74450., 75775., 77100.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17168., 18128., 22760., 24000., 25160., 26480., 14864., 15656.,
      33540., 35120., 42575., 44600., 45075., 47200., 25885., 27160.,
      50180., 52400., 62575., 65400., 65075., 68000., 36925., 38680.,
      66820., 69680., 82575., 86200., 85075., 88800., 47965., 50200.,
      26684., 28472., 32095., 34360., 32995., 35320., 17481., 18876.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {31325., 32900., 33825., 35500.,
                                         51325., 53700., 53825., 56300.,
                                         71325., 74500., 73825., 77100.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33888.,  34336.,  35792.,  36256.,  44900.,  45520.,  47360.,  48000.,
      49620.,  50320.,  52240.,  52960.,  29284.,  29728.,  30856.,  31312.,
      66040.,  67080.,  69180.,  70240.,  83775.,  85150.,  87800.,  89200.,
      88675.,  90150.,  92900.,  94400.,  50855.,  51770.,  53390.,  54320.,
      98680.,  100360., 103100., 104800., 122975., 125150., 128600., 130800.,
      127875., 130150., 133700., 136000., 72455.,  73850.,  75950.,  77360.,
      131320., 133640., 137020., 139360., 162175., 165150., 169400., 172400.,
      167075., 170150., 174500., 177600., 94055.,  95930.,  98510.,  100400.,
      51784.,  53368.,  55348.,  56944.,  62165.,  64190.,  66680.,  68720.,
      63905.,  65990.,  68540.,  70640.,  33693.,  34962.,  36474.,  37752.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      61725.,  62650.,  64850.,  65800.,  66625.,  67650.,  69950.,  71000.,
      100925., 102650., 105650., 107400., 105825., 107650., 110750., 112600.,
      140125., 142650., 146450., 149000., 145025., 147650., 151550., 154200.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      67328.,  67776.,  68224.,  68672.,  71120.,  71584.,  72048.,  72512.,
      89180.,  89800.,  90420.,  91040.,  94080.,  94720.,  95360.,  96000.,
      98540.,  99240.,  99940.,  100640., 103760., 104480., 105200., 105920.,
      58124.,  58568.,  59012.,  59456.,  61256.,  61712.,  62168.,  62624.,
      131040., 132080., 133120., 134160., 137300., 138360., 139420., 140480.,
      166175., 167550., 168925., 170300., 174200., 175600., 177000., 178400.,
      175875., 177350., 178825., 180300., 184300., 185800., 187300., 188800.,
      100795., 101710., 102625., 103540., 105850., 106780., 107710., 108640.,
      195680., 197360., 199040., 200720., 204500., 206200., 207900., 209600.,
      243775., 245950., 248125., 250300., 255000., 257200., 259400., 261600.,
      253475., 255750., 258025., 260300., 265100., 267400., 269700., 272000.,
      143515., 144910., 146305., 147700., 150490., 151900., 153310., 154720.,
      260320., 262640., 264960., 267280., 271700., 274040., 276380., 278720.,
      321375., 324350., 327325., 330300., 335800., 338800., 341800., 344800.,
      331075., 334150., 337225., 340300., 345900., 349000., 352100., 355200.,
      186235., 188110., 189985., 191860., 195130., 197020., 198910., 200800.,
      101984., 103568., 105152., 106736., 109100., 110696., 112292., 113888.,
      122305., 124330., 126355., 128380., 131320., 133360., 135400., 137440.,
      125725., 127810., 129895., 131980., 134980., 137080., 139180., 141280.,
      66117.,  67386.,  68655.,  69924.,  71670.,  72948.,  74226.,  75504.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122525., 123450., 124375., 125300., 128750., 129700., 130650., 131600.,
      132225., 133250., 134275., 135300., 138850., 139900., 140950., 142000.,
      200125., 201850., 203575., 205300., 209550., 211300., 213050., 214800.,
      209825., 211650., 213475., 215300., 219650., 221500., 223350., 225200.,
      277725., 280250., 282775., 285300., 290350., 292900., 295450., 298000.,
      287425., 290050., 292675., 295300., 300450., 303100., 305750., 308400.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      66800.,  68672.,  70576.,  72512.,  88620.,  91040.,  93500.,  96000.,
      98060.,  100640., 103260., 105920., 57908.,  59456.,  61028.,  62624.,
      131060., 134160., 137300., 140480., 166325., 170300., 174325., 178400.,
      176125., 180300., 184525., 188800., 101035., 103540., 106075., 108640.,
      196340., 200720., 205140., 209600., 244725., 250300., 255925., 261600.,
      254525., 260300., 266125., 272000., 144235., 147700., 151195., 154720.,
      261620., 267280., 272980., 278720., 323125., 330300., 337525., 344800.,
      332925., 340300., 347725., 355200., 187435., 191860., 196315., 200800.,
      103196., 106736., 110300., 113888., 123895., 128380., 132895., 137440.,
      127375., 131980., 136615., 141280., 67161.,  69924.,  72705.,  75504.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122225., 125300., 128425., 131600., 132025., 135300., 138625., 142000.,
      200625., 205300., 210025., 214800., 210425., 215300., 220225., 225200.,
      279025., 285300., 291625., 298000., 288825., 295300., 301825., 308400.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      132720., 133600., 136448., 137344., 140240., 141152., 144096., 145024.,
      176020., 177240., 180840., 182080., 185740., 187000., 190720., 192000.,
      194740., 196120., 199880., 201280., 205100., 206520., 210400., 211840.,
      114940., 115816., 118024., 118912., 121156., 122056., 124336., 125248.,
      260060., 262120., 266240., 268320., 272500., 274600., 278840., 280960.,
      329925., 332650., 337850., 340600., 345875., 348650., 354000., 356800.,
      349325., 352250., 357650., 360600., 366075., 369050., 374600., 377600.,
      200255., 202070., 205250., 207080., 210305., 212150., 215420., 217280.,
      389340., 392680., 398080., 401440., 406900., 410280., 415800., 419200.,
      485125., 489450., 496250., 500600., 507475., 511850., 518800., 523200.,
      504525., 509050., 516050., 520600., 527675., 532250., 539400., 544000.,
      285695., 288470., 292610., 295400., 299585., 302390., 306620., 309440.,
      518620., 523240., 529920., 534560., 541300., 545960., 552760., 557440.,
      640325., 646250., 654650., 660600., 669075., 675050., 683600., 689600.,
      659725., 665850., 674450., 680600., 689275., 695450., 704200., 710400.,
      371135., 374870., 379970., 383720., 388865., 392630., 397820., 401600.,
      203236., 206392., 210304., 213472., 217420., 220600., 224584., 227776.,
      243755., 247790., 252710., 256760., 261725., 265790., 270800., 274880.,
      250595., 254750., 259790., 263960., 269045., 273230., 278360., 282560.,
      131793., 134322., 137310., 139848., 142863., 145410., 148452., 151008.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      242625., 244450., 248750., 250600., 254975., 256850., 261300., 263200.,
      262025., 264050., 268550., 270600., 275175., 277250., 281900., 284000.,
      397825., 401250., 407150., 410600., 416575., 420050., 426100., 429600.,
      417225., 420850., 426950., 430600., 436775., 440450., 446700., 450400.,
      553025., 558050., 565550., 570600., 578175., 583250., 590900., 596000.,
      572425., 577650., 585350., 590600., 598375., 603650., 611500., 616800.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      264560.,  265440.,  266320.,  267200.,  272000.,  272896.,  273792.,
      274688.,  279568.,  280480.,  281392.,  282304.,  287264.,  288192.,
      289120.,  290048.,  350820.,  352040.,  353260.,  354480.,  360440.,
      361680.,  362920.,  364160.,  370220.,  371480.,  372740.,  374000.,
      380160.,  381440.,  382720.,  384000.,  388100.,  389480.,  390860.,
      392240.,  398360.,  399760.,  401160.,  402560.,  408780.,  410200.,
      411620.,  413040.,  419360.,  420800.,  422240.,  423680.,  229004.,
      229880.,  230756.,  231632.,  235160.,  236048.,  236936.,  237824.,
      241412.,  242312.,  243212.,  244112.,  247760.,  248672.,  249584.,
      250496.,  518060.,  520120.,  522180.,  524240.,  530400.,  532480.,
      534560.,  536640.,  542900.,  545000.,  547100.,  549200.,  555560.,
      557680.,  559800.,  561920.,  657125.,  659850.,  662575.,  665300.,
      672950.,  675700.,  678450.,  681200.,  688975.,  691750.,  694525.,
      697300.,  705200.,  708000.,  710800.,  713600.,  695725.,  698650.,
      701575.,  704500.,  712350.,  715300.,  718250.,  721200.,  729175.,
      732150.,  735125.,  738100.,  746200.,  749200.,  752200.,  755200.,
      398695.,  400510.,  402325.,  404140.,  408670.,  410500.,  412330.,
      414160.,  418765.,  420610.,  422455.,  424300.,  428980.,  430840.,
      432700.,  434560.,  775340.,  778680.,  782020.,  785360.,  792800.,
      796160.,  799520.,  802880.,  810420.,  813800.,  817180.,  820560.,
      828200.,  831600.,  835000.,  838400.,  965925.,  970250.,  974575.,
      978900.,  988150.,  992500.,  996850.,  1001200., 1010575., 1014950.,
      1019325., 1023700., 1033200., 1037600., 1042000., 1046400., 1004525.,
      1009050., 1013575., 1018100., 1027550., 1032100., 1036650., 1041200.,
      1050775., 1055350., 1059925., 1064500., 1074200., 1078800., 1083400.,
      1088000., 568615.,  571390.,  574165.,  576940.,  582430.,  585220.,
      588010.,  590800.,  596365.,  599170.,  601975.,  604780.,  610420.,
      613240.,  616060.,  618880.,  1032620., 1037240., 1041860., 1046480.,
      1055200., 1059840., 1064480., 1069120., 1077940., 1082600., 1087260.,
      1091920., 1100840., 1105520., 1110200., 1114880., 1274725., 1280650.,
      1286575., 1292500., 1303350., 1309300., 1315250., 1321200., 1332175.,
      1338150., 1344125., 1350100., 1361200., 1367200., 1373200., 1379200.,
      1313325., 1319450., 1325575., 1331700., 1342750., 1348900., 1355050.,
      1361200., 1372375., 1378550., 1384725., 1390900., 1402200., 1408400.,
      1414600., 1420800., 738535.,  742270.,  746005.,  749740.,  756190.,
      759940.,  763690.,  767440.,  773965.,  777730.,  781495.,  785260.,
      791860.,  795640.,  799420.,  803200.,  403316.,  406472.,  409628.,
      412784.,  417440.,  420608.,  423776.,  426944.,  431660.,  434840.,
      438020.,  441200.,  445976.,  449168.,  452360.,  455552.,  483475.,
      487510.,  491545.,  495580.,  501370.,  505420.,  509470.,  513520.,
      519385.,  523450.,  527515.,  531580.,  537520.,  541600.,  545680.,
      549760.,  497035.,  501190.,  505345.,  509500.,  515410.,  519580.,
      523750.,  527920.,  533905.,  538090.,  542275.,  546460.,  552520.,
      556720.,  560920.,  565120.,  261057.,  263586.,  266115.,  268644.,
      272082.,  274620.,  277158.,  279696.,  283179.,  285726.,  288273.,
      290820.,  294348.,  296904.,  299460.,  302016.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      483425.,  485250.,  487075.,  488900.,  495650.,  497500.,  499350.,
      501200.,  508075.,  509950.,  511825.,  513700.,  520700.,  522600.,
      524500.,  526400.,  522025.,  524050.,  526075.,  528100.,  535050.,
      537100.,  539150.,  541200.,  548275.,  550350.,  552425.,  554500.,
      561700.,  563800.,  565900.,  568000.,  792225.,  795650.,  799075.,
      802500.,  810850.,  814300.,  817750.,  821200.,  829675.,  833150.,
      836625.,  840100.,  848700.,  852200.,  855700.,  859200.,  830825.,
      834450.,  838075.,  841700.,  850250.,  853900.,  857550.,  861200.,
      869875.,  873550.,  877225.,  880900.,  889700.,  893400.,  897100.,
      900800.,  1101025., 1106050., 1111075., 1116100., 1126050., 1131100.,
      1136150., 1141200., 1151275., 1156350., 1161425., 1166500., 1176700.,
      1181800., 1186900., 1192000., 1139625., 1144850., 1150075., 1155300.,
      1165450., 1170700., 1175950., 1181200., 1191475., 1196750., 1202025.,
      1207300., 1217700., 1223000., 1228300., 1233600.};
  const std::array<int, 4> in_shape = {{1, 10, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5500.,  7180.,  7800.,  8420.,  4934.,  10800., 13600., 14250., 14900.,
      8530.,  16200., 20100., 20750., 21400., 12130., 21600., 26600., 27250.,
      27900., 15730., 8830.,  10610., 10850., 11090., 5913.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {10025., 10675., 11325., 16525., 17175.,
                                         17825., 23025., 23675., 24325.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10720., 11000., 13980., 14360., 15180., 15600., 16380., 16840., 9580.,
      9868.,  20950., 21600., 26350., 27200., 27600., 28500., 28850., 29800.,
      16475., 17060., 31350., 32400., 38850., 40200., 40100., 41500., 41350.,
      42800., 23375., 24260., 41750., 43200., 51350., 53200., 52600., 54500.,
      53850., 55800., 30275., 31460., 16670., 17660., 19960., 21220., 20410.,
      21700., 20860., 22180., 11025., 11826.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19475., 20050., 20725., 21350., 21975., 22650., 31975., 33050., 33225.,
      34350., 34475., 35650., 44475., 46050., 45725., 47350., 46975., 48650.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21160.,  21440.,  21720.,  22000.,  27580.,  27960.,  28340.,  28720.,
      29940.,  30360.,  30780.,  31200.,  32300.,  32760.,  33220.,  33680.,
      18872.,  19160.,  19448.,  19736.,  41250.,  41900.,  42550.,  43200.,
      51850.,  52700.,  53550.,  54400.,  54300.,  55200.,  56100.,  57000.,
      56750.,  57700.,  58650.,  59600.,  32365.,  32950.,  33535.,  34120.,
      61650.,  62700.,  63750.,  64800.,  76350.,  77700.,  79050.,  80400.,
      78800.,  80200.,  81600.,  83000.,  81250.,  82700.,  84150.,  85600.,
      45865.,  46750.,  47635.,  48520.,  82050.,  83500.,  84950.,  86400.,
      100850., 102700., 104550., 106400., 103300., 105200., 107100., 109000.,
      105750., 107700., 109650., 111600., 59365.,  60550.,  61735.,  62920.,
      32350.,  33340.,  34330.,  35320.,  38660.,  39920.,  41180.,  42440.,
      39530.,  40820.,  42110.,  43400.,  40400.,  41720.,  43040.,  44360.,
      21249.,  22050.,  22851.,  23652.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38375., 38950., 39525., 40100., 40825., 41450., 42075., 42700., 43275.,
      43950., 44625., 45300., 62875., 63950., 65025., 66100., 65325., 66450.,
      67575., 68700., 67775., 68950., 70125., 71300., 87375., 88950., 90525.,
      92100., 89825., 91450., 93075., 94700., 92275., 93950., 95625., 97300.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20944.,  22000.,  27360.,  28720.,  29760.,  31200.,  32160., 33680.,
      18824.,  19736.,  41380.,  43200.,  52075.,  54400.,  54575., 57000.,
      57075.,  59600.,  32605.,  34120.,  62180.,  64800.,  77075., 80400.,
      79575.,  83000.,  82075.,  85600.,  46405.,  48520.,  82980., 86400.,
      102075., 106400., 104575., 109000., 107075., 111600., 60205., 62920.,
      33148.,  35320.,  39695.,  42440.,  40595.,  43400.,  41495., 44360.,
      21933.,  23652.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38325., 40100., 40825., 42700., 43325., 45300., 63325., 66100., 65825.,
      68700., 68325., 71300., 88325., 92100., 90825., 94700., 93325., 97300.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41344.,  41888.,  43440.,  44000.,  53980.,  54720.,  56680.,  57440.,
      58700.,  59520.,  61560.,  62400.,  63420.,  64320.,  66440.,  67360.,
      37084.,  37648.,  38896.,  39472.,  81480.,  82760.,  85100.,  86400.,
      102475., 104150., 107100., 108800., 107375., 109150., 112200., 114000.,
      112275., 114150., 117300., 119200., 64055.,  65210.,  67070.,  68240.,
      122280., 124360., 127500., 129600., 151475., 154150., 158100., 160800.,
      156375., 159150., 163200., 166000., 161275., 164150., 168300., 171200.,
      91055.,  92810.,  95270.,  97040.,  163080., 165960., 169900., 172800.,
      200475., 204150., 209100., 212800., 205375., 209150., 214200., 218000.,
      210275., 214150., 219300., 223200., 118055., 120410., 123470., 125840.,
      64328.,  66296.,  68660.,  70640.,  76885.,  79390.,  82360.,  84880.,
      78625.,  81190.,  84220.,  86800.,  80365.,  82990.,  86080.,  88720.,
      42273.,  43866.,  45702.,  47304.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      75525.,  76650.,  79050.,  80200.,  80425.,  81650.,  84150.,  85400.,
      85325.,  86650.,  89250.,  90600.,  124525., 126650., 130050., 132200.,
      129425., 131650., 135150., 137400., 134325., 136650., 140250., 142600.,
      173525., 176650., 181050., 184200., 178425., 181650., 186150., 189400.,
      183325., 186650., 191250., 194600.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      82144.,  82688.,  83232.,  83776.,  86320.,  86880.,  87440.,  88000.,
      107220., 107960., 108700., 109440., 112600., 113360., 114120., 114880.,
      116580., 117400., 118220., 119040., 122280., 123120., 123960., 124800.,
      125940., 126840., 127740., 128640., 131960., 132880., 133800., 134720.,
      73604.,  74168.,  74732.,  75296.,  77216.,  77792.,  78368.,  78944.,
      161680., 162960., 164240., 165520., 168900., 170200., 171500., 172800.,
      203275., 204950., 206625., 208300., 212500., 214200., 215900., 217600.,
      212975., 214750., 216525., 218300., 222600., 224400., 226200., 228000.,
      222675., 224550., 226425., 228300., 232700., 234600., 236500., 238400.,
      126955., 128110., 129265., 130420., 132970., 134140., 135310., 136480.,
      242480., 244560., 246640., 248720., 252900., 255000., 257100., 259200.,
      300275., 302950., 305625., 308300., 313500., 316200., 318900., 321600.,
      309975., 312750., 315525., 318300., 323600., 326400., 329200., 332000.,
      319675., 322550., 325425., 328300., 333700., 336600., 339500., 342400.,
      180355., 182110., 183865., 185620., 188770., 190540., 192310., 194080.,
      323280., 326160., 329040., 331920., 336900., 339800., 342700., 345600.,
      397275., 400950., 404625., 408300., 414500., 418200., 421900., 425600.,
      406975., 410750., 414525., 418300., 424600., 428400., 432200., 436000.,
      416675., 420550., 424425., 428300., 434700., 438600., 442500., 446400.,
      233755., 236110., 238465., 240820., 244570., 246940., 249310., 251680.,
      126688., 128656., 130624., 132592., 135340., 137320., 139300., 141280.,
      151265., 153770., 156275., 158780., 162200., 164720., 167240., 169760.,
      154685., 157250., 159815., 162380., 165860., 168440., 171020., 173600.,
      158105., 160730., 163355., 165980., 169520., 172160., 174800., 177440.,
      82953.,  84546.,  86139.,  87732.,  89802.,  91404.,  93006.,  94608.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      149925., 151050., 152175., 153300., 156950., 158100., 159250., 160400.,
      159625., 160850., 162075., 163300., 167050., 168300., 169550., 170800.,
      169325., 170650., 171975., 173300., 177150., 178500., 179850., 181200.,
      246925., 249050., 251175., 253300., 257950., 260100., 262250., 264400.,
      256625., 258850., 261075., 263300., 268050., 270300., 272550., 274800.,
      266325., 268650., 270975., 273300., 278150., 280500., 282850., 285200.,
      343925., 347050., 350175., 353300., 358950., 362100., 365250., 368400.,
      353625., 356850., 360075., 363300., 369050., 372300., 375550., 378800.,
      363325., 366650., 369975., 373300., 379150., 382500., 385850., 389200.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      81712.,  83776.,  85872.,  88000.,  106780., 109440., 112140., 114880.,
      116220., 119040., 121900., 124800., 125660., 128640., 131660., 134720.,
      73508.,  75296.,  77108.,  78944.,  161940., 165520., 169140., 172800.,
      203725., 208300., 212925., 217600., 213525., 218300., 223125., 228000.,
      223325., 228300., 233325., 238400., 127435., 130420., 133435., 136480.,
      243540., 248720., 253940., 259200., 301725., 308300., 314925., 321600.,
      311525., 318300., 325125., 332000., 321325., 328300., 335325., 342400.,
      181435., 185620., 189835., 194080., 325140., 331920., 338740., 345600.,
      399725., 408300., 416925., 425600., 409525., 418300., 427125., 436000.,
      419325., 428300., 437325., 446400., 235435., 240820., 246235., 251680.,
      128284., 132592., 136924., 141280., 153335., 158780., 164255., 169760.,
      156815., 162380., 167975., 173600., 160295., 165980., 171695., 177440.,
      84321.,  87732.,  91161.,  94608.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      149825., 153300., 156825., 160400., 159625., 163300., 167025., 170800.,
      169425., 173300., 177225., 181200., 247825., 253300., 258825., 264400.,
      257625., 263300., 269025., 274800., 267425., 273300., 279225., 285200.,
      345825., 353300., 360825., 368400., 355625., 363300., 371025., 378800.,
      365425., 373300., 381225., 389200.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      162352., 163424., 166464., 167552., 170640., 171744., 174880., 176000.,
      212100., 213560., 217400., 218880., 222780., 224280., 228240., 229760.,
      230820., 232440., 236440., 238080., 242140., 243800., 247920., 249600.,
      249540., 251320., 255480., 257280., 261500., 263320., 267600., 269440.,
      145900., 147016., 149464., 150592., 153076., 154216., 156736., 157888.,
      321340., 323880., 328480., 331040., 335700., 338280., 343000., 345600.,
      404125., 407450., 413250., 416600., 422475., 425850., 431800., 435200.,
      423525., 427050., 433050., 436600., 442675., 446250., 452400., 456000.,
      442925., 446650., 452850., 456600., 462875., 466650., 473000., 476800.,
      252575., 254870., 258530., 260840., 264545., 266870., 270620., 272960.,
      482940., 487080., 493280., 497440., 503700., 507880., 514200., 518400.,
      598125., 603450., 611250., 616600., 624475., 629850., 637800., 643200.,
      617525., 623050., 631050., 636600., 644675., 650250., 658400., 664000.,
      636925., 642650., 650850., 656600., 664875., 670650., 679000., 684800.,
      359375., 362870., 367730., 371240., 376145., 379670., 384620., 388160.,
      644540., 650280., 658080., 663840., 671700., 677480., 685400., 691200.,
      792125., 799450., 809250., 816600., 826475., 833850., 843800., 851200.,
      811525., 819050., 829050., 836600., 846675., 854250., 864400., 872000.,
      830925., 838650., 848850., 856600., 866875., 874650., 885000., 892800.,
      466175., 470870., 476930., 481640., 487745., 492470., 498620., 503360.,
      252644., 256568., 261248., 265184., 269900., 273848., 278600., 282560.,
      301675., 306670., 312550., 317560., 323485., 328510., 334480., 339520.,
      308515., 313630., 319630., 324760., 330805., 335950., 342040., 347200.,
      315355., 320590., 326710., 331960., 338125., 343390., 349600., 354880.,
      165465., 168642., 172278., 175464., 179127., 182322., 186012., 189216.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      297425., 299650., 304350., 306600., 311375., 313650., 318500., 320800.,
      316825., 319250., 324150., 326600., 331575., 334050., 339100., 341600.,
      336225., 338850., 343950., 346600., 351775., 354450., 359700., 362400.,
      491425., 495650., 502350., 506600., 513375., 517650., 524500., 528800.,
      510825., 515250., 522150., 526600., 533575., 538050., 545100., 549600.,
      530225., 534850., 541950., 546600., 553775., 558450., 565700., 570400.,
      685425., 691650., 700350., 706600., 715375., 721650., 730500., 736800.,
      704825., 711250., 720150., 726600., 735575., 742050., 751100., 757600.,
      724225., 730850., 739950., 746600., 755775., 762450., 771700., 778400.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME1x10x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      323632.,  324704.,  325776.,  326848.,  331840.,  332928.,  334016.,
      335104.,  340176.,  341280.,  342384.,  343488.,  348640.,  349760.,
      350880.,  352000.,  422740.,  424200.,  425660.,  427120.,  433320.,
      434800.,  436280.,  437760.,  444060.,  445560.,  447060.,  448560.,
      454960.,  456480.,  458000.,  459520.,  460020.,  461640.,  463260.,
      464880.,  471240.,  472880.,  474520.,  476160.,  482620.,  484280.,
      485940.,  487600.,  494160.,  495840.,  497520.,  499200.,  497300.,
      499080.,  500860.,  502640.,  509160.,  510960.,  512760.,  514560.,
      521180.,  523000.,  524820.,  526640.,  533360.,  535200.,  537040.,
      538880.,  290684.,  291800.,  292916.,  294032.,  297800.,  298928.,
      300056.,  301184.,  305012.,  306152.,  307292.,  308432.,  312320.,
      313472.,  314624.,  315776.,  640140.,  642680.,  645220.,  647760.,
      654400.,  656960.,  659520.,  662080.,  668820.,  671400.,  673980.,
      676560.,  683400.,  686000.,  688600.,  691200.,  804925.,  808250.,
      811575.,  814900.,  823150.,  826500.,  829850.,  833200.,  841575.,
      844950.,  848325.,  851700.,  860200.,  863600.,  867000.,  870400.,
      843525.,  847050.,  850575.,  854100.,  862550.,  866100.,  869650.,
      873200.,  881775.,  885350.,  888925.,  892500.,  901200.,  904800.,
      908400.,  912000.,  882125.,  885850.,  889575.,  893300.,  901950.,
      905700.,  909450.,  913200.,  921975.,  925750.,  929525.,  933300.,
      942200.,  946000.,  949800.,  953600.,  502855.,  505150.,  507445.,
      509740.,  514750.,  517060.,  519370.,  521680.,  526765.,  529090.,
      531415.,  533740.,  538900.,  541240.,  543580.,  545920.,  961740.,
      965880.,  970020.,  974160.,  982400.,  986560.,  990720.,  994880.,
      1003220., 1007400., 1011580., 1015760., 1024200., 1028400., 1032600.,
      1036800., 1190925., 1196250., 1201575., 1206900., 1217150., 1222500.,
      1227850., 1233200., 1243575., 1248950., 1254325., 1259700., 1270200.,
      1275600., 1281000., 1286400., 1229525., 1235050., 1240575., 1246100.,
      1256550., 1262100., 1267650., 1273200., 1283775., 1289350., 1294925.,
      1300500., 1311200., 1316800., 1322400., 1328000., 1268125., 1273850.,
      1279575., 1285300., 1295950., 1301700., 1307450., 1313200., 1323975.,
      1329750., 1335525., 1341300., 1352200., 1358000., 1363800., 1369600.,
      715255.,  718750.,  722245.,  725740.,  731950.,  735460.,  738970.,
      742480.,  748765.,  752290.,  755815.,  759340.,  765700.,  769240.,
      772780.,  776320.,  1283340., 1289080., 1294820., 1300560., 1310400.,
      1316160., 1321920., 1327680., 1337620., 1343400., 1349180., 1354960.,
      1365000., 1370800., 1376600., 1382400., 1576925., 1584250., 1591575.,
      1598900., 1611150., 1618500., 1625850., 1633200., 1645575., 1652950.,
      1660325., 1667700., 1680200., 1687600., 1695000., 1702400., 1615525.,
      1623050., 1630575., 1638100., 1650550., 1658100., 1665650., 1673200.,
      1685775., 1693350., 1700925., 1708500., 1721200., 1728800., 1736400.,
      1744000., 1654125., 1661850., 1669575., 1677300., 1689950., 1697700.,
      1705450., 1713200., 1725975., 1733750., 1741525., 1749300., 1762200.,
      1770000., 1777800., 1785600., 927655.,  932350.,  937045.,  941740.,
      949150.,  953860.,  958570.,  963280.,  970765.,  975490.,  980215.,
      984940.,  992500.,  997240.,  1001980., 1006720., 501364.,  505288.,
      509212.,  513136.,  518560.,  522496.,  526432.,  530368.,  535852.,
      539800.,  543748.,  547696.,  553240.,  557200.,  561160.,  565120.,
      598355.,  603350.,  608345.,  613340.,  620090.,  625100.,  630110.,
      635120.,  641945.,  646970.,  651995.,  657020.,  663920.,  668960.,
      674000.,  679040.,  611915.,  617030.,  622145.,  627260.,  634130.,
      639260.,  644390.,  649520.,  656465.,  661610.,  666755.,  671900.,
      678920.,  684080.,  689240.,  694400.,  625475.,  630710.,  635945.,
      641180.,  648170.,  653420.,  658670.,  663920.,  670985.,  676250.,
      681515.,  686780.,  693920.,  699200.,  704480.,  709760.,  327753.,
      330930.,  334107.,  337284.,  341370.,  344556.,  347742.,  350928.,
      355059.,  358254.,  361449.,  364644.,  368820.,  372024.,  375228.,
      378432.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID1x10x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      592625.,  594850.,  597075.,  599300.,  606450.,  608700.,  610950.,
      613200.,  620475.,  622750.,  625025.,  627300.,  634700.,  637000.,
      639300.,  641600.,  631225.,  633650.,  636075.,  638500.,  645850.,
      648300.,  650750.,  653200.,  660675.,  663150.,  665625.,  668100.,
      675700.,  678200.,  680700.,  683200.,  669825.,  672450.,  675075.,
      677700.,  685250.,  687900.,  690550.,  693200.,  700875.,  703550.,
      706225.,  708900.,  716700.,  719400.,  722100.,  724800.,  978625.,
      982850.,  987075.,  991300.,  1000450., 1004700., 1008950., 1013200.,
      1022475., 1026750., 1031025., 1035300., 1044700., 1049000., 1053300.,
      1057600., 1017225., 1021650., 1026075., 1030500., 1039850., 1044300.,
      1048750., 1053200., 1062675., 1067150., 1071625., 1076100., 1085700.,
      1090200., 1094700., 1099200., 1055825., 1060450., 1065075., 1069700.,
      1079250., 1083900., 1088550., 1093200., 1102875., 1107550., 1112225.,
      1116900., 1126700., 1131400., 1136100., 1140800., 1364625., 1370850.,
      1377075., 1383300., 1394450., 1400700., 1406950., 1413200., 1424475.,
      1430750., 1437025., 1443300., 1454700., 1461000., 1467300., 1473600.,
      1403225., 1409650., 1416075., 1422500., 1433850., 1440300., 1446750.,
      1453200., 1464675., 1471150., 1477625., 1484100., 1495700., 1502200.,
      1508700., 1515200., 1441825., 1448450., 1455075., 1461700., 1473250.,
      1479900., 1486550., 1493200., 1504875., 1511550., 1518225., 1524900.,
      1536700., 1543400., 1550100., 1556800.};
  const std::array<int, 4> in_shape = {{1, 10, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1755.,  3080.,  3620.,  2205.,  4420.,  7325.,  7975.,  4660.,
      7360.,  11875., 12525., 7180.,  3213.,  4940.,  5180.,  2799.,
      10134., 16310., 16850., 9702.,  14710., 23250., 23900., 13480.,
      17650., 27800., 28450., 16000., 7182.,  10820., 11060., 5886.,
      18513., 29540., 30080., 17199., 25000., 39175., 39825., 22300.,
      27940., 43725., 44375., 24820., 11151., 16700., 16940., 8973.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7325.,  7975.,  11875., 12525.,
                                         23250., 23900., 27800., 28450.,
                                         39175., 39825., 43725., 44375.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3429.,  3510.,  6010.,  6160.,  7060.,  7240.,  4293.,  4410.,  8600.,
      8840.,  14225., 14650., 15475., 15950., 9020.,  9320.,  14270., 14720.,
      22975., 23750., 24225., 25050., 13850., 14360., 6093.,  6426.,  9310.,
      9880.,  9760.,  10360., 5229.,  5598.,  19746., 20268., 31735., 32620.,
      32785., 33700., 18846., 19404., 28445., 29420., 44850., 46500., 46100.,
      47800., 25925., 26960., 34115., 35300., 53600., 55600., 54850., 56900.,
      30755., 32000., 13590., 14364., 20335., 21640., 20785., 22120., 10962.,
      11772., 36063., 37026., 57460., 59080., 58510., 60160., 33399., 34398.,
      48290., 50000., 75475., 78350., 76725., 79650., 42830., 44600., 53960.,
      55880., 84225., 87450., 85475., 88750., 47660., 49640., 21087., 22302.,
      31360., 33400., 31810., 33880., 16695., 17946.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14225., 14650., 15475., 15950., 22975., 23750., 24225., 25050.,
      44850., 46500., 46100., 47800., 53600., 55600., 54850., 56900.,
      75475., 78350., 76725., 79650., 84225., 87450., 85475., 88750.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6777.,   6858.,   6939.,   7020.,   11870.,  12020.,  12170.,  12320.,
      13940.,  14120.,  14300.,  14480.,  8469.,   8586.,   8703.,   8820.,
      16960.,  17200.,  17440.,  17680.,  28025.,  28450.,  28875.,  29300.,
      30475.,  30950.,  31425.,  31900.,  17740.,  18040.,  18340.,  18640.,
      28090.,  28540.,  28990.,  29440.,  45175.,  45950.,  46725.,  47500.,
      47625.,  48450.,  49275.,  50100.,  27190.,  27700.,  28210.,  28720.,
      11853.,  12186.,  12519.,  12852.,  18050.,  18620.,  19190.,  19760.,
      18920.,  19520.,  20120.,  20720.,  10089.,  10458.,  10827.,  11196.,
      38970.,  39492.,  40014.,  40536.,  62585.,  63470.,  64355.,  65240.,
      64655.,  65570.,  66485.,  67400.,  37134.,  37692.,  38250.,  38808.,
      55915.,  56890.,  57865.,  58840.,  88050.,  89700.,  91350.,  93000.,
      90500.,  92200.,  93900.,  95600.,  50815.,  51850.,  52885.,  53920.,
      67045.,  68230.,  69415.,  70600.,  105200., 107200., 109200., 111200.,
      107650., 109700., 111750., 113800., 60265.,  61510.,  62755.,  64000.,
      26406.,  27180.,  27954.,  28728.,  39365.,  40670.,  41975.,  43280.,
      40235.,  41570.,  42905.,  44240.,  21114.,  21924.,  22734.,  23544.,
      71163.,  72126.,  73089.,  74052.,  113300., 114920., 116540., 118160.,
      115370., 117020., 118670., 120320., 65799.,  66798.,  67797.,  68796.,
      94870.,  96580.,  98290.,  100000., 148075., 150950., 153825., 156700.,
      150525., 153450., 156375., 159300., 83890.,  85660.,  87430.,  89200.,
      106000., 107920., 109840., 111760., 165225., 168450., 171675., 174900.,
      167675., 170950., 174225., 177500., 93340.,  95320.,  97300.,  99280.,
      40959.,  42174.,  43389.,  44604.,  60680.,  62720.,  64760.,  66800.,
      61550.,  63620.,  65690.,  67760.,  32139.,  33390.,  34641.,  35892.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28025.,  28450.,  28875.,  29300.,  30475.,  30950.,  31425.,  31900.,
      45175.,  45950.,  46725.,  47500.,  47625.,  48450.,  49275.,  50100.,
      88050.,  89700.,  91350.,  93000.,  90500.,  92200.,  93900.,  95600.,
      105200., 107200., 109200., 111200., 107650., 109700., 111750., 113800.,
      148075., 150950., 153825., 156700., 150525., 153450., 156375., 159300.,
      165225., 168450., 171675., 174900., 167675., 170950., 174225., 177500.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6525.,   7020.,   11495.,  12320.,  13595.,  14480.,  8289.,  8820.,
      16795.,  17680.,  27825.,  29300.,  30325.,  31900.,  17695., 18640.,
      28135.,  29440.,  45325.,  47500.,  47825.,  50100.,  27355., 28720.,
      12033.,  12852.,  18395.,  19760.,  19295.,  20720.,  10341., 11196.,
      39159.,  40536.,  62945.,  65240.,  65045.,  67400.,  37395., 38808.,
      56485.,  58840.,  89075.,  93000.,  91575.,  95600.,  51505., 53920.,
      67825.,  70600.,  106575., 111200., 109075., 113800., 61165., 64000.,
      27027.,  28728.,  40445.,  43280.,  41345.,  44240.,  21807., 23544.,
      71793.,  74052.,  114395., 118160., 116495., 120320., 66501., 68796.,
      96175.,  100000., 150325., 156700., 152825., 159300., 85315., 89200.,
      107515., 111760., 167825., 174900., 170325., 177500., 94975., 99280.,
      42021.,  44604.,  62495.,  66800.,  63395.,  67760.,  33273., 35892.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      27825.,  29300.,  30325.,  31900.,  45325.,  47500.,  47825.,  50100.,
      89075.,  93000.,  91575.,  95600.,  106575., 111200., 109075., 113800.,
      150325., 156700., 152825., 159300., 167825., 174900., 170325., 177500.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12897.,  13050.,  13878.,  14040.,  22705.,  22990.,  24340.,  24640.,
      26845.,  27190.,  28600.,  28960.,  16353.,  16578.,  17406.,  17640.,
      33125.,  33590.,  34880.,  35360.,  54825.,  55650.,  57750.,  58600.,
      59725.,  60650.,  62850.,  63800.,  34805.,  35390.,  36680.,  37280.,
      55385.,  56270.,  57980.,  58880.,  89125.,  90650.,  93450.,  95000.,
      94025.,  95650.,  98550.,  100200., 53705.,  54710.,  56420.,  57440.,
      23409.,  24066.,  25038.,  25704.,  35665.,  36790.,  38380.,  39520.,
      37405.,  38590.,  40240.,  41440.,  19953.,  20682.,  21654.,  22392.,
      77283.,  78318.,  80028.,  81072.,  124135., 125890., 128710., 130480.,
      128275., 130090., 132970., 134800., 73683.,  74790.,  76500.,  77616.,
      111035., 112970., 115730., 117680., 174875., 178150., 182700., 186000.,
      179775., 183150., 187800., 191200., 100955., 103010., 105770., 107840.,
      133295., 135650., 138830., 141200., 209175., 213150., 218400., 222400.,
      214075., 218150., 223500., 227600., 119855., 122330., 125510., 128000.,
      52515.,  54054.,  55908.,  57456.,  78295.,  80890.,  83950.,  86560.,
      80035.,  82690.,  85810.,  88480.,  42003.,  43614.,  45468.,  47088.,
      141669., 143586., 146178., 148104., 225565., 228790., 233080., 236320.,
      229705., 232990., 237340., 240640., 131013., 133002., 135594., 137592.,
      188945., 192350., 196580., 200000., 294925., 300650., 307650., 313400.,
      299825., 305650., 312750., 318600., 167105., 170630., 174860., 178400.,
      211205., 215030., 219680., 223520., 329225., 335650., 343350., 349800.,
      334125., 340650., 348450., 355000., 186005., 189950., 194600., 198560.,
      81621.,  84042.,  86778.,  89208.,  120925., 124990., 129520., 133600.,
      122665., 126790., 131380., 135520., 64053.,  66546.,  69282.,  71784.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      54825.,  55650.,  57750.,  58600.,  59725.,  60650.,  62850.,  63800.,
      89125.,  90650.,  93450.,  95000.,  94025.,  95650.,  98550.,  100200.,
      174875., 178150., 182700., 186000., 179775., 183150., 187800., 191200.,
      209175., 213150., 218400., 222400., 214075., 218150., 223500., 227600.,
      294925., 300650., 307650., 313400., 299825., 305650., 312750., 318600.,
      329225., 335650., 343350., 349800., 334125., 340650., 348450., 355000.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      25641.,  25794.,  25947.,  26100.,  27594.,  27756.,  27918.,  28080.,
      45125.,  45410.,  45695.,  45980.,  48380.,  48680.,  48980.,  49280.,
      53345.,  53690.,  54035.,  54380.,  56840.,  57200.,  57560.,  57920.,
      32481.,  32706.,  32931.,  33156.,  34578.,  34812.,  35046.,  35280.,
      65785.,  66250.,  66715.,  67180.,  69280.,  69760.,  70240.,  70720.,
      108825., 109650., 110475., 111300., 114650., 115500., 116350., 117200.,
      118525., 119450., 120375., 121300., 124750., 125700., 126650., 127600.,
      69025.,  69610.,  70195.,  70780.,  72760.,  73360.,  73960.,  74560.,
      109885., 110770., 111655., 112540., 115060., 115960., 116860., 117760.,
      176725., 178250., 179775., 181300., 185350., 186900., 188450., 190000.,
      186425., 188050., 189675., 191300., 195450., 197100., 198750., 200400.,
      106405., 107410., 108415., 109420., 111820., 112840., 113860., 114880.,
      46161.,  46818.,  47475.,  48132.,  49410.,  50076.,  50742.,  51408.,
      70205.,  71330.,  72455.,  73580.,  75620.,  76760.,  77900.,  79040.,
      73625.,  74810.,  75995.,  77180.,  79280.,  80480.,  81680.,  82880.,
      39177.,  39906.,  40635.,  41364.,  42570.,  43308.,  44046.,  44784.,
      153531., 154566., 155601., 156636., 159012., 160056., 161100., 162144.,
      246515., 248270., 250025., 251780., 255650., 257420., 259190., 260960.,
      254735., 256550., 258365., 260180., 264110., 265940., 267770., 269600.,
      146259., 147366., 148473., 149580., 151884., 153000., 154116., 155232.,
      220135., 222070., 224005., 225940., 229510., 231460., 233410., 235360.,
      346475., 349750., 353025., 356300., 362100., 365400., 368700., 372000.,
      356175., 359550., 362925., 366300., 372200., 375600., 379000., 382400.,
      199855., 201910., 203965., 206020., 209470., 211540., 213610., 215680.,
      264235., 266590., 268945., 271300., 275290., 277660., 280030., 282400.,
      414375., 418350., 422325., 426300., 432800., 436800., 440800., 444800.,
      424075., 428150., 432225., 436300., 442900., 447000., 451100., 455200.,
      237235., 239710., 242185., 244660., 248530., 251020., 253510., 256000.,
      103491., 105030., 106569., 108108., 110268., 111816., 113364., 114912.,
      153995., 156590., 159185., 161780., 165290., 167900., 170510., 173120.,
      157415., 160070., 162725., 165380., 168950., 171620., 174290., 176960.,
      82395.,  84006.,  85617.,  87228.,  89316.,  90936.,  92556.,  94176.,
      281421., 283338., 285255., 287172., 290430., 292356., 294282., 296208.,
      447905., 451130., 454355., 457580., 462920., 466160., 469400., 472640.,
      456125., 459410., 462695., 465980., 471380., 474680., 477980., 481280.,
      260037., 262026., 264015., 266004., 269190., 271188., 273186., 275184.,
      374485., 377890., 381295., 384700., 389740., 393160., 396580., 400000.,
      584125., 589850., 595575., 601300., 609550., 615300., 621050., 626800.,
      593825., 599650., 605475., 611300., 619650., 625500., 631350., 637200.,
      330685., 334210., 337735., 341260., 346180., 349720., 353260., 356800.,
      418585., 422410., 426235., 430060., 435520., 439360., 443200., 447040.,
      652025., 658450., 664875., 671300., 680250., 686700., 693150., 699600.,
      661725., 668250., 674775., 681300., 690350., 696900., 703450., 710000.,
      368065., 372010., 375955., 379900., 385240., 389200., 393160., 397120.,
      160821., 163242., 165663., 168084., 171126., 173556., 175986., 178416.,
      237785., 241850., 245915., 249980., 254960., 259040., 263120., 267200.,
      241205., 245330., 249455., 253580., 258620., 262760., 266900., 271040.,
      125613., 128106., 130599., 133092., 136062., 138564., 141066., 143568.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108825., 109650., 110475., 111300., 114650., 115500., 116350., 117200.,
      118525., 119450., 120375., 121300., 124750., 125700., 126650., 127600.,
      176725., 178250., 179775., 181300., 185350., 186900., 188450., 190000.,
      186425., 188050., 189675., 191300., 195450., 197100., 198750., 200400.,
      346475., 349750., 353025., 356300., 362100., 365400., 368700., 372000.,
      356175., 359550., 362925., 366300., 372200., 375600., 379000., 382400.,
      414375., 418350., 422325., 426300., 432800., 436800., 440800., 444800.,
      424075., 428150., 432225., 436300., 442900., 447000., 451100., 455200.,
      584125., 589850., 595575., 601300., 609550., 615300., 621050., 626800.,
      593825., 599650., 605475., 611300., 619650., 625500., 631350., 637200.,
      652025., 658450., 664875., 671300., 680250., 686700., 693150., 699600.,
      661725., 668250., 674775., 681300., 690350., 696900., 703450., 710000.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      25137.,  26100.,  27081.,  28080.,  44375.,  45980.,  47615.,  49280.,
      52655.,  54380.,  56135.,  57920.,  32121.,  33156.,  34209.,  35280.,
      65455.,  67180.,  68935.,  70720.,  108425., 111300., 114225., 117200.,
      118225., 121300., 124425., 127600., 68935.,  70780.,  72655.,  74560.,
      109975., 112540., 115135., 117760., 177025., 181300., 185625., 190000.,
      186825., 191300., 195825., 200400., 106735., 109420., 112135., 114880.,
      46521.,  48132.,  49761.,  51408.,  70895.,  73580.,  76295.,  79040.,
      74375.,  77180.,  80015.,  82880.,  39681.,  41364.,  43065.,  44784.,
      153909., 156636., 159381., 162144., 247235., 251780., 256355., 260960.,
      255515., 260180., 264875., 269600., 146781., 149580., 152397., 155232.,
      221275., 225940., 230635., 235360., 348525., 356300., 364125., 372000.,
      358325., 366300., 374325., 382400., 201235., 206020., 210835., 215680.,
      265795., 271300., 276835., 282400., 417125., 426300., 435525., 444800.,
      426925., 436300., 445725., 455200., 239035., 244660., 250315., 256000.,
      104733., 108108., 111501., 114912., 156155., 161780., 167435., 173120.,
      159635., 165380., 171155., 176960., 83781.,  87228.,  90693.,  94176.,
      282681., 287172., 291681., 296208., 450095., 457580., 465095., 472640.,
      458375., 465980., 473615., 481280., 261441., 266004., 270585., 275184.,
      377095., 384700., 392335., 400000., 588625., 601300., 614025., 626800.,
      598425., 611300., 624225., 637200., 333535., 341260., 349015., 356800.,
      421615., 430060., 438535., 447040., 657225., 671300., 685425., 699600.,
      667025., 681300., 695625., 710000., 371335., 379900., 388495., 397120.,
      162945., 168084., 173241., 178416., 241415., 249980., 258575., 267200.,
      244895., 253580., 262295., 271040., 127881., 133092., 138321., 143568.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108425., 111300., 114225., 117200., 118225., 121300., 124425., 127600.,
      177025., 181300., 185625., 190000., 186825., 191300., 195825., 200400.,
      348525., 356300., 364125., 372000., 358325., 366300., 374325., 382400.,
      417125., 426300., 435525., 444800., 426925., 436300., 445725., 455200.,
      588625., 601300., 614025., 626800., 598425., 611300., 624225., 637200.,
      657225., 671300., 685425., 699600., 667025., 681300., 695625., 710000.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      49977.,   50274.,   51894.,   52200.,   53847.,   54162.,   55836.,
      56160.,   88195.,   88750.,   91390.,   91960.,   94645.,   95230.,
      97960.,   98560.,   104635.,  105310.,  108070.,  108760.,  111565.,
      112270.,  115120.,  115840.,  63801.,   64242.,   65862.,   66312.,
      67959.,   68418.,   70092.,   70560.,   129995.,  130910.,  133430.,
      134360.,  136925.,  137870.,  140480.,  141440.,  215225.,  216850.,
      220950.,  222600.,  226775.,  228450.,  232700.,  234400.,  234625.,
      236450.,  240750.,  242600.,  246975.,  248850.,  253300.,  255200.,
      136715.,  137870.,  140390.,  141560.,  144125.,  145310.,  147920.,
      149120.,  218195.,  219950.,  223310.,  225080.,  228485.,  230270.,
      233720.,  235520.,  351025.,  354050.,  359550.,  362600.,  368175.,
      371250.,  376900.,  380000.,  370425.,  373650.,  379350.,  382600.,
      388375.,  391650.,  397500.,  400800.,  211475.,  213470.,  216830.,
      218840.,  222245.,  224270.,  227720.,  229760.,  91737.,   93042.,
      94950.,   96264.,   98199.,   99522.,   101484.,  102816.,  139555.,
      141790.,  144910.,  147160.,  150325.,  152590.,  155800.,  158080.,
      146395.,  148750.,  151990.,  154360.,  157645.,  160030.,  163360.,
      165760.,  77913.,   79362.,   81270.,   82728.,   84663.,   86130.,
      88092.,   89568.,   305757.,  307818.,  311202.,  313272.,  316683.,
      318762.,  322200.,  324288.,  490975.,  494470.,  500050.,  503560.,
      509185.,  512710.,  518380.,  521920.,  507415.,  511030.,  516730.,
      520360.,  526105.,  529750.,  535540.,  539200.,  291357.,  293562.,
      296946.,  299160.,  302571.,  304794.,  308232.,  310464.,  438695.,
      442550.,  448010.,  451880.,  457385.,  461270.,  466820.,  470720.,
      690525.,  697050.,  706050.,  712600.,  721675.,  728250.,  737400.,
      744000.,  709925.,  716650.,  725850.,  732600.,  741875.,  748650.,
      758000.,  764800.,  398375.,  402470.,  407930.,  412040.,  417545.,
      421670.,  427220.,  431360.,  526895.,  531590.,  537890.,  542600.,
      548945.,  553670.,  560060.,  564800.,  826325.,  834250.,  844650.,
      852600.,  863075.,  871050.,  881600.,  889600.,  845725.,  853850.,
      864450.,  872600.,  883275.,  891450.,  902200.,  910400.,  473135.,
      478070.,  484370.,  489320.,  495665.,  500630.,  507020.,  512000.,
      206397.,  209466.,  213138.,  216216.,  219915.,  223002.,  226728.,
      229824.,  307135.,  312310.,  318370.,  323560.,  329665.,  334870.,
      341020.,  346240.,  313975.,  319270.,  325450.,  330760.,  336985.,
      342310.,  348580.,  353920.,  164349.,  167562.,  171234.,  174456.,
      178155.,  181386.,  185112.,  188352.,  561537.,  565362.,  570510.,
      574344.,  579519.,  583362.,  588564.,  592416.,  893755.,  900190.,
      908710.,  915160.,  923725.,  930190.,  938800.,  945280.,  910195.,
      916750.,  925390.,  931960.,  940645.,  947230.,  955960.,  962560.,
      518913.,  522882.,  528030.,  532008.,  537183.,  541170.,  546372.,
      550368.,  747395.,  754190.,  762590.,  769400.,  777845.,  784670.,
      793160.,  800000.,  1165825., 1177250., 1191150., 1202600., 1216575.,
      1228050., 1242100., 1253600., 1185225., 1196850., 1210950., 1222600.,
      1236775., 1248450., 1262700., 1274400., 660035.,  667070.,  675470.,
      682520.,  690965.,  698030.,  706520.,  713600.,  835595.,  843230.,
      852470.,  860120.,  869405.,  877070.,  886400.,  894080.,  1301625.,
      1314450., 1329750., 1342600., 1357975., 1370850., 1386300., 1399200.,
      1321025., 1334050., 1349550., 1362600., 1378175., 1391250., 1406900.,
      1420000., 734795.,  742670.,  751910.,  759800.,  769085.,  776990.,
      786320.,  794240.,  321057.,  325890.,  331326.,  336168.,  341631.,
      346482.,  351972.,  356832.,  474715.,  482830.,  491830.,  499960.,
      509005.,  517150.,  526240.,  534400.,  481555.,  489790.,  498910.,
      507160.,  516325.,  524590.,  533800.,  542080.,  250785.,  255762.,
      261198.,  266184.,  271647.,  276642.,  282132.,  287136.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      215225.,  216850.,  220950.,  222600.,  226775.,  228450.,  232700.,
      234400.,  234625.,  236450.,  240750.,  242600.,  246975.,  248850.,
      253300.,  255200.,  351025.,  354050.,  359550.,  362600.,  368175.,
      371250.,  376900.,  380000.,  370425.,  373650.,  379350.,  382600.,
      388375.,  391650.,  397500.,  400800.,  690525.,  697050.,  706050.,
      712600.,  721675.,  728250.,  737400.,  744000.,  709925.,  716650.,
      725850.,  732600.,  741875.,  748650.,  758000.,  764800.,  826325.,
      834250.,  844650.,  852600.,  863075.,  871050.,  881600.,  889600.,
      845725.,  853850.,  864450.,  872600.,  883275.,  891450.,  902200.,
      910400.,  1165825., 1177250., 1191150., 1202600., 1216575., 1228050.,
      1242100., 1253600., 1185225., 1196850., 1210950., 1222600., 1236775.,
      1248450., 1262700., 1274400., 1301625., 1314450., 1329750., 1342600.,
      1357975., 1370850., 1386300., 1399200., 1321025., 1334050., 1349550.,
      1362600., 1378175., 1391250., 1406900., 1420000.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      99657.,   99954.,   100251.,  100548.,  103482.,  103788.,  104094.,
      104400.,  107379.,  107694.,  108009.,  108324.,  111348.,  111672.,
      111996.,  112320.,  175835.,  176390.,  176945.,  177500.,  182210.,
      182780.,  183350.,  183920.,  188705.,  189290.,  189875.,  190460.,
      195320.,  195920.,  196520.,  197120.,  208595.,  209270.,  209945.,
      210620.,  215450.,  216140.,  216830.,  217520.,  222425.,  223130.,
      223835.,  224540.,  229520.,  230240.,  230960.,  231680.,  127161.,
      127602.,  128043.,  128484.,  131274.,  131724.,  132174.,  132624.,
      135459.,  135918.,  136377.,  136836.,  139716.,  140184.,  140652.,
      141120.,  259075.,  259990.,  260905.,  261820.,  265930.,  266860.,
      267790.,  268720.,  272905.,  273850.,  274795.,  275740.,  280000.,
      280960.,  281920.,  282880.,  428825.,  430450.,  432075.,  433700.,
      440250.,  441900.,  443550.,  445200.,  451875.,  453550.,  455225.,
      456900.,  463700.,  465400.,  467100.,  468800.,  467425.,  469250.,
      471075.,  472900.,  479650.,  481500.,  483350.,  485200.,  492075.,
      493950.,  495825.,  497700.,  504700.,  506600.,  508500.,  510400.,
      272275.,  273430.,  274585.,  275740.,  279610.,  280780.,  281950.,
      283120.,  287065.,  288250.,  289435.,  290620.,  294640.,  295840.,
      297040.,  298240.,  434635.,  436390.,  438145.,  439900.,  444850.,
      446620.,  448390.,  450160.,  455185.,  456970.,  458755.,  460540.,
      465640.,  467440.,  469240.,  471040.,  699025.,  702050.,  705075.,
      708100.,  716050.,  719100.,  722150.,  725200.,  733275.,  736350.,
      739425.,  742500.,  750700.,  753800.,  756900.,  760000.,  737625.,
      740850.,  744075.,  747300.,  755450.,  758700.,  761950.,  765200.,
      773475.,  776750.,  780025.,  783300.,  791700.,  795000.,  798300.,
      801600.,  420955.,  422950.,  424945.,  426940.,  431650.,  433660.,
      435670.,  437680.,  442465.,  444490.,  446515.,  448540.,  453400.,
      455440.,  457480.,  459520.,  182169.,  183474.,  184779.,  186084.,
      188586.,  189900.,  191214.,  192528.,  195075.,  196398.,  197721.,
      199044.,  201636.,  202968.,  204300.,  205632.,  276875.,  279110.,
      281345.,  283580.,  287570.,  289820.,  292070.,  294320.,  298385.,
      300650.,  302915.,  305180.,  309320.,  311600.,  313880.,  316160.,
      290435.,  292790.,  295145.,  297500.,  301610.,  303980.,  306350.,
      308720.,  312905.,  315290.,  317675.,  320060.,  324320.,  326720.,
      329120.,  331520.,  154377.,  155826.,  157275.,  158724.,  161082.,
      162540.,  163998.,  165456.,  167859.,  169326.,  170793.,  172260.,
      174708.,  176184.,  177660.,  179136.,  609453.,  611514.,  613575.,
      615636.,  620334.,  622404.,  624474.,  626544.,  631287.,  633366.,
      635445.,  637524.,  642312.,  644400.,  646488.,  648576.,  978455.,
      981950.,  985445.,  988940.,  996590.,  1000100., 1003610., 1007120.,
      1014845., 1018370., 1021895., 1025420., 1033220., 1036760., 1040300.,
      1043840., 1011215., 1014830., 1018445., 1022060., 1029830., 1033460.,
      1037090., 1040720., 1048565., 1052210., 1055855., 1059500., 1067420.,
      1071080., 1074740., 1078400., 580509.,  582714.,  584919.,  587124.,
      591678.,  593892.,  596106.,  598320.,  602919.,  605142.,  607365.,
      609588.,  614232.,  616464.,  618696.,  620928.,  873535.,  877390.,
      881245.,  885100.,  892150.,  896020.,  899890.,  903760.,  910885.,
      914770.,  918655.,  922540.,  929740.,  933640.,  937540.,  941440.,
      1374525., 1381050., 1387575., 1394100., 1405550., 1412100., 1418650.,
      1425200., 1436775., 1443350., 1449925., 1456500., 1468200., 1474800.,
      1481400., 1488000., 1413125., 1419850., 1426575., 1433300., 1444950.,
      1451700., 1458450., 1465200., 1476975., 1483750., 1490525., 1497300.,
      1509200., 1516000., 1522800., 1529600., 792655.,  796750.,  800845.,
      804940.,  811750.,  815860.,  819970.,  824080.,  830965.,  835090.,
      839215.,  843340.,  850300.,  854440.,  858580.,  862720.,  1049095.,
      1053790., 1058485., 1063180., 1071070., 1075780., 1080490., 1085200.,
      1093165., 1097890., 1102615., 1107340., 1115380., 1120120., 1124860.,
      1129600., 1644725., 1652650., 1660575., 1668500., 1681350., 1689300.,
      1697250., 1705200., 1718175., 1726150., 1734125., 1742100., 1755200.,
      1763200., 1771200., 1779200., 1683325., 1691450., 1699575., 1707700.,
      1720750., 1728900., 1737050., 1745200., 1758375., 1766550., 1774725.,
      1782900., 1796200., 1804400., 1812600., 1820800., 941335.,  946270.,
      951205.,  956140.,  963790.,  968740.,  973690.,  978640.,  986365.,
      991330.,  996295.,  1001260., 1009060., 1014040., 1019020., 1024000.,
      409725.,  412794.,  415863.,  418932.,  423198.,  426276.,  429354.,
      432432.,  436743.,  439830.,  442917.,  446004.,  450360.,  453456.,
      456552.,  459648.,  609095.,  614270.,  619445.,  624620.,  631550.,
      636740.,  641930.,  647120.,  654125.,  659330.,  664535.,  669740.,
      676820.,  682040.,  687260.,  692480.,  622655.,  627950.,  633245.,
      638540.,  645590.,  650900.,  656210.,  661520.,  668645.,  673970.,
      679295.,  684620.,  691820.,  697160.,  702500.,  707840.,  325485.,
      328698.,  331911.,  335124.,  339246.,  342468.,  345690.,  348912.,
      353079.,  356310.,  359541.,  362772.,  366984.,  370224.,  373464.,
      376704.,  1119249., 1123074., 1126899., 1130724., 1137186., 1141020.,
      1144854., 1148688., 1155195., 1159038., 1162881., 1166724., 1173276.,
      1177128., 1180980., 1184832., 1781075., 1787510., 1793945., 1800380.,
      1810970., 1817420., 1823870., 1830320., 1840985., 1847450., 1853915.,
      1860380., 1871120., 1877600., 1884080., 1890560., 1813835., 1820390.,
      1826945., 1833500., 1844210., 1850780., 1857350., 1863920., 1874705.,
      1881290., 1887875., 1894460., 1905320., 1911920., 1918520., 1925120.,
      1033857., 1037826., 1041795., 1045764., 1052082., 1056060., 1060038.,
      1064016., 1070379., 1074366., 1078353., 1082340., 1088748., 1092744.,
      1096740., 1100736., 1487995., 1494790., 1501585., 1508380., 1518370.,
      1525180., 1531990., 1538800., 1548865., 1555690., 1562515., 1569340.,
      1579480., 1586320., 1593160., 1600000., 2320225., 2331650., 2343075.,
      2354500., 2370850., 2382300., 2393750., 2405200., 2421675., 2433150.,
      2444625., 2456100., 2472700., 2484200., 2495700., 2507200., 2358825.,
      2370450., 2382075., 2393700., 2410250., 2421900., 2433550., 2445200.,
      2461875., 2473550., 2485225., 2496900., 2513700., 2525400., 2537100.,
      2548800., 1313035., 1320070., 1327105., 1334140., 1343890., 1350940.,
      1357990., 1365040., 1374865., 1381930., 1388995., 1396060., 1405960.,
      1413040., 1420120., 1427200., 1663555., 1671190., 1678825., 1686460.,
      1697290., 1704940., 1712590., 1720240., 1731145., 1738810., 1746475.,
      1754140., 1765120., 1772800., 1780480., 1788160., 2590425., 2603250.,
      2616075., 2628900., 2646650., 2659500., 2672350., 2685200., 2703075.,
      2715950., 2728825., 2741700., 2759700., 2772600., 2785500., 2798400.,
      2629025., 2642050., 2655075., 2668100., 2686050., 2699100., 2712150.,
      2725200., 2743275., 2756350., 2769425., 2782500., 2800700., 2813800.,
      2826900., 2840000., 1461715., 1469590., 1477465., 1485340., 1495930.,
      1503820., 1511710., 1519600., 1530265., 1538170., 1546075., 1553980.,
      1564720., 1572640., 1580560., 1588480., 637281.,  642114.,  646947.,
      651780.,  657810.,  662652.,  667494.,  672336.,  678411.,  683262.,
      688113.,  692964.,  699084.,  703944.,  708804.,  713664.,  941315.,
      949430.,  957545.,  965660.,  975530.,  983660.,  991790.,  999920.,
      1009865., 1018010., 1026155., 1034300., 1044320., 1052480., 1060640.,
      1068800., 954875.,  963110.,  971345.,  979580.,  989570.,  997820.,
      1006070., 1014320., 1024385., 1032650., 1040915., 1049180., 1059320.,
      1067600., 1075880., 1084160., 496593.,  501570.,  506547.,  511524.,
      517410.,  522396.,  527382.,  532368.,  538299.,  543294.,  548289.,
      553284.,  559260.,  564264.,  569268.,  574272.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      428825.,  430450.,  432075.,  433700.,  440250.,  441900.,  443550.,
      445200.,  451875.,  453550.,  455225.,  456900.,  463700.,  465400.,
      467100.,  468800.,  467425.,  469250.,  471075.,  472900.,  479650.,
      481500.,  483350.,  485200.,  492075.,  493950.,  495825.,  497700.,
      504700.,  506600.,  508500.,  510400.,  699025.,  702050.,  705075.,
      708100.,  716050.,  719100.,  722150.,  725200.,  733275.,  736350.,
      739425.,  742500.,  750700.,  753800.,  756900.,  760000.,  737625.,
      740850.,  744075.,  747300.,  755450.,  758700.,  761950.,  765200.,
      773475.,  776750.,  780025.,  783300.,  791700.,  795000.,  798300.,
      801600.,  1374525., 1381050., 1387575., 1394100., 1405550., 1412100.,
      1418650., 1425200., 1436775., 1443350., 1449925., 1456500., 1468200.,
      1474800., 1481400., 1488000., 1413125., 1419850., 1426575., 1433300.,
      1444950., 1451700., 1458450., 1465200., 1476975., 1483750., 1490525.,
      1497300., 1509200., 1516000., 1522800., 1529600., 1644725., 1652650.,
      1660575., 1668500., 1681350., 1689300., 1697250., 1705200., 1718175.,
      1726150., 1734125., 1742100., 1755200., 1763200., 1771200., 1779200.,
      1683325., 1691450., 1699575., 1707700., 1720750., 1728900., 1737050.,
      1745200., 1758375., 1766550., 1774725., 1782900., 1796200., 1804400.,
      1812600., 1820800., 2320225., 2331650., 2343075., 2354500., 2370850.,
      2382300., 2393750., 2405200., 2421675., 2433150., 2444625., 2456100.,
      2472700., 2484200., 2495700., 2507200., 2358825., 2370450., 2382075.,
      2393700., 2410250., 2421900., 2433550., 2445200., 2461875., 2473550.,
      2485225., 2496900., 2513700., 2525400., 2537100., 2548800., 2590425.,
      2603250., 2616075., 2628900., 2646650., 2659500., 2672350., 2685200.,
      2703075., 2715950., 2728825., 2741700., 2759700., 2772600., 2785500.,
      2798400., 2629025., 2642050., 2655075., 2668100., 2686050., 2699100.,
      2712150., 2725200., 2743275., 2756350., 2769425., 2782500., 2800700.,
      2813800., 2826900., 2840000.};
  const std::array<int, 4> in_shape = {{3, 7, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2666.,  3670.,  4210.,  2541.,  6620.,  8550.,  9200.,  5350.,
      10940., 13750., 14400., 8230.,  4670.,  5710.,  5950.,  3207.,
      15098., 18790., 19330., 11109., 21740., 26750., 27400., 15430.,
      26060., 31950., 32600., 18310., 10382., 12430., 12670., 6735.,
      27530., 33910., 34450., 19677., 36860., 44950., 45600., 25510.,
      41180., 50150., 50800., 28390., 16094., 19150., 19390., 10263.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8225.,  8875.,  13425., 14075.,
                                         26425., 27075., 31625., 32275.,
                                         44625., 45275., 49825., 50475.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5206.,  5332.,  7160.,   7340.,  8210.,   8420.,  4947.,  5082.,  12870.,
      13240., 16600., 17100.,  17850., 18400.,  10355., 10700., 21190., 21880.,
      26600., 27500., 27850.,  28800., 15875.,  16460., 8830.,  9340.,  10760.,
      11420., 11210., 11900.,  5991.,  6414.,   29398., 30196., 36560., 37580.,
      37610., 38660., 21579.,  22218., 41990.,  43480., 51600., 53500., 52850.,
      54800., 29675., 30860.,  50310., 52120.,  61600., 63900., 62850., 65200.,
      35195., 36620., 19582.,  20764., 23360.,  24860., 23810., 25340., 12543.,
      13470., 53590., 55060.,  65960., 67820.,  67010., 68900., 38211., 39354.,
      71110., 73720., 86600.,  89900., 87850.,  91200., 48995., 51020., 79430.,
      82360., 96600., 100300., 97850., 101600., 54515., 56780., 30334., 32188.,
      35960., 38300., 36410.,  38780., 19095.,  20526.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15975., 16450., 17225., 17750., 25975., 26850., 27225., 28150.,
      50975., 52850., 52225., 54150., 60975., 63250., 62225., 64550.,
      85975., 89250., 87225., 90550., 95975., 99650., 97225., 100950.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10286.,  10412.,  10538.,  10664.,  14140.,  14320.,  14500.,  14680.,
      16210.,  16420.,  16630.,  16840.,  9759.,   9894.,   10029.,  10164.,
      25370.,  25740.,  26110.,  26480.,  32700.,  33200.,  33700.,  34200.,
      35150.,  35700.,  36250.,  36800.,  20365.,  20710.,  21055.,  21400.,
      41690.,  42380.,  43070.,  43760.,  52300.,  53200.,  54100.,  55000.,
      54750.,  55700.,  56650.,  57600.,  31165.,  31750.,  32335.,  32920.,
      17150.,  17660.,  18170.,  18680.,  20860.,  21520.,  22180.,  22840.,
      21730.,  22420.,  23110.,  23800.,  11559.,  11982.,  12405.,  12828.,
      57998.,  58796.,  59594.,  60392.,  72100.,  73120.,  74140.,  75160.,
      74170.,  75220.,  76270.,  77320.,  42519.,  43158.,  43797.,  44436.,
      82490.,  83980.,  85470.,  86960.,  101300., 103200., 105100., 107000.,
      103750., 105700., 107650., 109600., 58165.,  59350.,  60535.,  61720.,
      98810.,  100620., 102430., 104240., 120900., 123200., 125500., 127800.,
      123350., 125700., 128050., 130400., 68965.,  70390.,  71815.,  73240.,
      37982.,  39164.,  40346.,  41528.,  45220.,  46720.,  48220.,  49720.,
      46090.,  47620.,  49150.,  50680.,  24159.,  25086.,  26013.,  26940.,
      105710., 107180., 108650., 110120., 130060., 131920., 133780., 135640.,
      132130., 134020., 135910., 137800., 75279.,  76422.,  77565.,  78708.,
      139610., 142220., 144830., 147440., 169900., 173200., 176500., 179800.,
      172350., 175700., 179050., 182400., 95965.,  97990.,  100015., 102040.,
      155930., 158860., 161790., 164720., 189500., 193200., 196900., 200600.,
      191950., 195700., 199450., 203200., 106765., 109030., 111295., 113560.,
      58814.,  60668.,  62522.,  64376.,  69580.,  71920.,  74260.,  76600.,
      70450.,  72820.,  75190.,  77560.,  36759.,  38190.,  39621.,  41052.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31475.,  31950.,  32425.,  32900.,  33925.,  34450.,  34975.,  35500.,
      51075.,  51950.,  52825.,  53700.,  53525.,  54450.,  55375.,  56300.,
      100075., 101950., 103825., 105700., 102525., 104450., 106375., 108300.,
      119675., 121950., 124225., 126500., 122125., 124450., 126775., 129100.,
      168675., 171950., 175225., 178500., 171125., 174450., 177775., 181100.,
      188275., 191950., 195625., 199300., 190725., 194450., 198175., 201900.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9980.,   10664.,  13795.,  14680.,  15895.,  16840.,  9597.,   10164.,
      25220.,  26480.,  32575.,  34200.,  35075.,  36800.,  20365.,  21400.,
      41860.,  43760.,  52575.,  55000.,  55075.,  57600.,  31405.,  32920.,
      17468.,  18680.,  21295.,  22840.,  22195.,  23800.,  11865.,  12828.,
      58364.,  60392.,  72595.,  75160.,  74695.,  77320.,  42861.,  44436.,
      83460.,  86960.,  102575., 107000., 105075., 109600., 59005.,  61720.,
      100100., 104240., 122575., 127800., 125075., 130400., 70045.,  73240.,
      38972.,  41528.,  46495.,  49720.,  47395.,  50680.,  24969.,  26940.,
      106748., 110120., 131395., 135640., 133495., 137800., 76125.,  78708.,
      141700., 147440., 172575., 179800., 175075., 182400., 97645.,  102040.,
      158340., 164720., 192575., 200600., 195075., 203200., 108685., 113560.,
      60476.,  64376.,  71695.,  76600.,  72595.,  77560.,  38073.,  41052.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31325.,  32900.,  33825.,  35500.,  51325.,  53700.,  53825.,  56300.,
      101325., 105700., 103825., 108300., 121325., 126500., 123825., 129100.,
      171325., 178500., 173825., 181100., 191325., 199300., 193825., 201900.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19720.,  19960.,  21076.,  21328.,  27245.,  27590.,  29000.,  29360.,
      31385.,  31790.,  33260.,  33680.,  18933.,  19194.,  20058.,  20328.,
      49720.,  50440.,  52220.,  52960.,  64175.,  65150.,  67400.,  68400.,
      69075.,  70150.,  72500.,  73600.,  40055.,  40730.,  42110.,  42800.,
      82360.,  83720.,  86140.,  87520.,  103375., 105150., 108200., 110000.,
      108275., 110150., 113300., 115200., 61655.,  62810.,  64670.,  65840.,
      33928.,  34936.,  36340.,  37360.,  41285.,  42590.,  44360.,  45680.,
      43025.,  44390.,  46220.,  47600.,  22893.,  23730.,  24810.,  25656.,
      115144., 116728., 119188., 120784., 143165., 145190., 148280., 150320.,
      147305., 149390., 152540., 154640., 84453.,  85722.,  87594.,  88872.,
      163960., 166920., 170940., 173920., 201375., 205150., 210200., 214000.,
      206275., 210150., 215300., 219200., 115655., 118010., 121070., 123440.,
      196600., 200200., 204860., 208480., 240575., 245150., 251000., 255600.,
      245475., 250150., 256100., 260800., 137255., 140090., 143630., 146480.,
      75592.,  77944.,  80692.,  83056.,  90005.,  92990.,  96440.,  99440.,
      91745.,  94790.,  98300.,  101360., 48093.,  49938.,  52026.,  53880.,
      210568., 213496., 217300., 220240., 259085., 262790., 267560., 271280.,
      263225., 266990., 271820., 275600., 149973., 152250., 155130., 157416.,
      278200., 283400., 289660., 294880., 338575., 345150., 353000., 359600.,
      343475., 350150., 358100., 364800., 191255., 195290., 200030., 204080.,
      310840., 316680., 323580., 329440., 377775., 385150., 393800., 401200.,
      382675., 390150., 398900., 406400., 212855., 217370., 222590., 227120.,
      117256., 120952., 125044., 128752., 138725., 143390., 148520., 153200.,
      140465., 145190., 150380., 155120., 73293.,  76146.,  79242.,  82104.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      61725.,  62650.,  64850.,  65800.,  66625.,  67650.,  69950.,  71000.,
      100925., 102650., 105650., 107400., 105825., 107650., 110750., 112600.,
      198925., 202650., 207650., 211400., 203825., 207650., 212750., 216600.,
      238125., 242650., 248450., 253000., 243025., 247650., 253550., 258200.,
      336125., 342650., 350450., 357000., 341025., 347650., 355550., 362200.,
      375325., 382650., 391250., 398600., 380225., 387650., 396350., 403800.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      39200.,  39440.,  39680.,  39920.,  41900.,  42152.,  42404.,  42656.,
      54145.,  54490.,  54835.,  55180.,  57640.,  58000.,  58360.,  58720.,
      62365.,  62770.,  63175.,  63580.,  66100.,  66520.,  66940.,  67360.,
      37605.,  37866.,  38127.,  38388.,  39846.,  40116.,  40386.,  40656.,
      98720.,  99440.,  100160., 100880., 103700., 104440., 105180., 105920.,
      127375., 128350., 129325., 130300., 133800., 134800., 135800., 136800.,
      137075., 138150., 139225., 140300., 143900., 145000., 146100., 147200.,
      79435.,  80110.,  80785.,  81460.,  83530.,  84220.,  84910.,  85600.,
      163360., 164720., 166080., 167440., 170900., 172280., 173660., 175040.,
      204975., 206750., 208525., 210300., 214600., 216400., 218200., 220000.,
      214675., 216550., 218425., 220300., 224700., 226600., 228500., 230400.,
      122155., 123310., 124465., 125620., 128170., 129340., 130510., 131680.,
      66848.,  67856.,  68864.,  69872.,  71660.,  72680.,  73700.,  74720.,
      81265.,  82570.,  83875.,  85180.,  87400.,  88720.,  90040.,  91360.,
      84685.,  86050.,  87415.,  88780.,  91060.,  92440.,  93820.,  95200.,
      44949.,  45786.,  46623.,  47460.,  48774.,  49620.,  50466.,  51312.,
      228704., 230288., 231872., 233456., 236780., 238376., 239972., 241568.,
      284305., 286330., 288355., 290380., 294520., 296560., 298600., 300640.,
      292525., 294610., 296695., 298780., 302980., 305080., 307180., 309280.,
      167637., 168906., 170175., 171444., 173910., 175188., 176466., 177744.,
      324960., 327920., 330880., 333840., 338900., 341880., 344860., 347840.,
      398975., 402750., 406525., 410300., 416600., 420400., 424200., 428000.,
      408675., 412550., 416425., 420300., 426700., 430600., 434500., 438400.,
      228955., 231310., 233665., 236020., 239770., 242140., 244510., 246880.,
      389600., 393200., 396800., 400400., 406100., 409720., 413340., 416960.,
      476575., 481150., 485725., 490300., 497400., 502000., 506600., 511200.,
      486275., 490950., 495625., 500300., 507500., 512200., 516900., 521600.,
      271675., 274510., 277345., 280180., 284410., 287260., 290110., 292960.,
      148832., 151184., 153536., 155888., 159020., 161384., 163748., 166112.,
      177025., 180010., 182995., 185980., 189880., 192880., 195880., 198880.,
      180445., 183490., 186535., 189580., 193540., 196600., 199660., 202720.,
      94341.,  96186.,  98031.,  99876.,  102198., 104052., 105906., 107760.,
      418208., 421136., 424064., 426992., 431660., 434600., 437540., 440480.,
      514465., 518170., 521875., 525580., 531400., 535120., 538840., 542560.,
      522685., 526450., 530215., 533980., 539860., 543640., 547420., 551200.,
      297669., 299946., 302223., 304500., 307974., 310260., 312546., 314832.,
      551200., 556400., 561600., 566800., 574100., 579320., 584540., 589760.,
      670575., 677150., 683725., 690300., 699400., 706000., 712600., 719200.,
      680275., 686950., 693625., 700300., 709500., 716200., 722900., 729600.,
      378475., 382510., 386545., 390580., 396010., 400060., 404110., 408160.,
      615840., 621680., 627520., 633360., 641300., 647160., 653020., 658880.,
      748175., 755550., 762925., 770300., 780200., 787600., 795000., 802400.,
      757875., 765350., 772825., 780300., 790300., 797800., 805300., 812800.,
      421195., 425710., 430225., 434740., 440650., 445180., 449710., 454240.,
      230816., 234512., 238208., 241904., 246380., 250088., 253796., 257504.,
      272785., 277450., 282115., 286780., 292360., 297040., 301720., 306400.,
      276205., 280930., 285655., 290380., 296020., 300760., 305500., 310240.,
      143733., 146586., 149439., 152292., 155622., 158484., 161346., 164208.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122525., 123450., 124375., 125300., 128750., 129700., 130650., 131600.,
      132225., 133250., 134275., 135300., 138850., 139900., 140950., 142000.,
      200125., 201850., 203575., 205300., 209550., 211300., 213050., 214800.,
      209825., 211650., 213475., 215300., 219650., 221500., 223350., 225200.,
      394125., 397850., 401575., 405300., 411550., 415300., 419050., 422800.,
      403825., 407650., 411475., 415300., 421650., 425500., 429350., 433200.,
      471725., 476250., 480775., 485300., 492350., 496900., 501450., 506000.,
      481425., 486050., 490675., 495300., 502450., 507100., 511750., 516400.,
      665725., 672250., 678775., 685300., 694350., 700900., 707450., 714000.,
      675425., 682050., 688675., 695300., 704450., 711100., 717750., 724400.,
      743325., 750650., 757975., 765300., 775150., 782500., 789850., 797200.,
      753025., 760450., 767875., 775300., 785250., 792700., 800150., 807600.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38588.,  39920.,  41276.,  42656.,  53455.,  55180.,  56935.,  58720.,
      61735.,  63580.,  65455.,  67360.,  37281.,  38388.,  39513.,  40656.,
      98420.,  100880., 103380., 105920., 127125., 130300., 133525., 136800.,
      136925., 140300., 143725., 147200., 79435.,  81460.,  83515.,  85600.,
      163700., 167440., 171220., 175040., 205525., 210300., 215125., 220000.,
      215325., 220300., 225325., 230400., 122635., 125620., 128635., 131680.,
      67484.,  69872.,  72284.,  74720.,  82135.,  85180.,  88255.,  91360.,
      85615.,  88780.,  91975.,  95200.,  45561.,  47460.,  49377.,  51312.,
      229436., 233456., 237500., 241568., 285295., 290380., 295495., 300640.,
      293575., 298780., 304015., 309280., 168321., 171444., 174585., 177744.,
      326900., 333840., 340820., 347840., 401525., 410300., 419125., 428000.,
      411325., 420300., 429325., 438400., 230635., 236020., 241435., 246880.,
      392180., 400400., 408660., 416960., 479925., 490300., 500725., 511200.,
      489725., 500300., 510925., 521600., 273835., 280180., 286555., 292960.,
      150812., 155888., 160988., 166112., 179575., 185980., 192415., 198880.,
      183055., 189580., 196135., 202720., 95961.,  99876.,  103809., 107760.,
      420284., 426992., 433724., 440480., 517135., 525580., 534055., 542560.,
      525415., 533980., 542575., 551200., 299361., 304500., 309657., 314832.,
      555380., 566800., 578260., 589760., 675925., 690300., 704725., 719200.,
      685725., 700300., 714925., 729600., 381835., 390580., 399355., 408160.,
      620660., 633360., 646100., 658880., 754325., 770300., 786325., 802400.,
      764125., 780300., 796525., 812800., 425035., 434740., 444475., 454240.,
      234140., 241904., 249692., 257504., 277015., 286780., 296575., 306400.,
      280495., 290380., 300295., 310240., 146361., 152292., 158241., 164208.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122225., 125300., 128425., 131600., 132025., 135300., 138625., 142000.,
      200625., 205300., 210025., 214800., 210425., 215300., 220225., 225200.,
      396625., 405300., 414025., 422800., 406425., 415300., 424225., 433200.,
      475025., 485300., 495625., 506000., 484825., 495300., 505825., 516400.,
      671025., 685300., 699625., 714000., 680825., 695300., 709825., 724400.,
      749425., 765300., 781225., 797200., 759225., 775300., 791425., 807600.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      76708.,   77176.,   79360.,   79840.,   82060.,   82552.,   84808.,
      85312.,   106235.,  106910.,  109670.,  110360.,  113165.,  113870.,
      116720.,  117440.,  122675.,  123470.,  126350.,  127160.,  130085.,
      130910.,  133880.,  134720.,  74049.,   74562.,   76254.,   76776.,
      78495.,   79026.,   80772.,   81312.,   195420.,  196840.,  200320.,
      201760.,  205300.,  206760.,  210360.,  211840.,  252325.,  254250.,
      258650.,  260600.,  265075.,  267050.,  271600.,  273600.,  271725.,
      273850.,  278450.,  280600.,  285275.,  287450.,  292200.,  294400.,
      157535.,  158870.,  161570.,  162920.,  165665.,  167030.,  169820.,
      171200.,  324700.,  327400.,  332160.,  334880.,  339700.,  342440.,
      347320.,  350080.,  407525.,  411050.,  417050.,  420600.,  426675.,
      430250.,  436400.,  440000.,  426925.,  430650.,  436850.,  440600.,
      446875.,  450650.,  457000.,  460800.,  242975.,  245270.,  248930.,
      251240.,  254945.,  257270.,  261020.,  263360.,  132964.,  134968.,
      137728.,  139744.,  142540.,  144568.,  147400.,  149440.,  161675.,
      164270.,  167750.,  170360.,  173885.,  176510.,  180080.,  182720.,
      168515.,  171230.,  174830.,  177560.,  181205.,  183950.,  187640.,
      190400.,  89457.,   91122.,   93246.,   94920.,   97071.,   98754.,
      100932.,  102624.,  455716.,  458872.,  463744.,  466912.,  471820.,
      475000.,  479944.,  483136.,  566555.,  570590.,  576710.,  580760.,
      586925.,  590990.,  597200.,  601280.,  582995.,  587150.,  593390.,
      597560.,  603845.,  608030.,  614360.,  618560.,  334113.,  336642.,
      340350.,  342888.,  346623.,  349170.,  352932.,  355488.,  647900.,
      653800.,  661760.,  667680.,  675700.,  681640.,  689720.,  695680.,
      795525.,  803050.,  813050.,  820600.,  830675.,  838250.,  848400.,
      856000.,  814925.,  822650.,  832850.,  840600.,  850875.,  858650.,
      869000.,  876800.,  456575.,  461270.,  467330.,  472040.,  478145.,
      482870.,  489020.,  493760.,  777180.,  784360.,  793600.,  800800.,
      810100.,  817320.,  826680.,  833920.,  950725.,  959850.,  971450.,
      980600.,  992275.,  1001450., 1013200., 1022400., 970125.,  979450.,
      991250.,  1000600., 1012475., 1021850., 1033800., 1043200., 542015.,
      547670.,  554690.,  560360.,  567425.,  573110.,  580220.,  585920.,
      296932.,  301624.,  307072.,  311776.,  317260.,  321976.,  327496.,
      332224.,  353195.,  359150.,  365990.,  371960.,  378845.,  384830.,
      391760.,  397760.,  360035.,  366110.,  373070.,  379160.,  386165.,
      392270.,  399320.,  405440.,  188241.,  191922.,  196062.,  199752.,
      203919.,  207618.,  211812.,  215520.,  834724.,  840568.,  848128.,
      853984.,  861580.,  867448.,  875080.,  880960.,  1026875., 1034270.,
      1043750., 1051160., 1060685., 1068110., 1077680., 1085120., 1043315.,
      1050830., 1060430., 1067960., 1077605., 1085150., 1094840., 1102400.,
      594177.,  598722.,  604446.,  609000.,  614751.,  619314.,  625092.,
      629664.,  1100380., 1110760., 1123200., 1133600., 1146100., 1156520.,
      1169080., 1179520., 1338725., 1351850., 1367450., 1380600., 1396275.,
      1409450., 1425200., 1438400., 1358125., 1371450., 1387250., 1400600.,
      1416475., 1429850., 1445800., 1459200., 755615.,  763670.,  773090.,
      781160.,  790625.,  798710.,  808220.,  816320.,  1229660., 1241320.,
      1255040., 1266720., 1280500., 1292200., 1306040., 1317760., 1493925.,
      1508650., 1525850., 1540600., 1557875., 1572650., 1590000., 1604800.,
      1513325., 1528250., 1545650., 1560600., 1578075., 1593050., 1610600.,
      1625600., 841055.,  850070.,  860450.,  869480.,  879905.,  888950.,
      899420.,  908480.,  460900.,  468280.,  476416.,  483808.,  491980.,
      499384.,  507592.,  515008.,  544715.,  554030.,  564230.,  573560.,
      583805.,  593150.,  603440.,  612800.,  551555.,  560990.,  571310.,
      580760.,  591125.,  600590.,  611000.,  620480.,  287025.,  292722.,
      298878.,  304584.,  310767.,  316482.,  322692.,  328416.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      242625.,  244450.,  248750.,  250600.,  254975.,  256850.,  261300.,
      263200.,  262025.,  264050.,  268550.,  270600.,  275175.,  277250.,
      281900.,  284000.,  397825.,  401250.,  407150.,  410600.,  416575.,
      420050.,  426100.,  429600.,  417225.,  420850.,  426950.,  430600.,
      436775.,  440450.,  446700.,  450400.,  785825.,  793250.,  803150.,
      810600.,  820575.,  828050.,  838100.,  845600.,  805225.,  812850.,
      822950.,  830600.,  840775.,  848450.,  858700.,  866400.,  941025.,
      950050.,  961550.,  970600.,  982175.,  991250.,  1002900., 1012000.,
      960425.,  969650.,  981350.,  990600.,  1002375., 1011650., 1023500.,
      1032800., 1329025., 1342050., 1357550., 1370600., 1386175., 1399250.,
      1414900., 1428000., 1348425., 1361650., 1377350., 1390600., 1406375.,
      1419650., 1435500., 1448800., 1484225., 1498850., 1515950., 1530600.,
      1547775., 1562450., 1579700., 1594400., 1503625., 1518450., 1535750.,
      1550600., 1567975., 1582850., 1600300., 1615200.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      152948.,  153416.,  153884.,  154352.,  158240.,  158720.,  159200.,
      159680.,  163628.,  164120.,  164612.,  165104.,  169112.,  169616.,
      170120.,  170624.,  211795.,  212470.,  213145.,  213820.,  218650.,
      219340.,  220030.,  220720.,  225625.,  226330.,  227035.,  227740.,
      232720.,  233440.,  234160.,  234880.,  244555.,  245350.,  246145.,
      246940.,  251890.,  252700.,  253510.,  254320.,  259345.,  260170.,
      260995.,  261820.,  266920.,  267760.,  268600.,  269440.,  147585.,
      148098.,  148611.,  149124.,  151986.,  152508.,  153030.,  153552.,
      156459.,  156990.,  157521.,  158052.,  161004.,  161544.,  162084.,
      162624.,  389420.,  390840.,  392260.,  393680.,  399200.,  400640.,
      402080.,  403520.,  409140.,  410600.,  412060.,  413520.,  419240.,
      420720.,  422200.,  423680.,  502725.,  504650.,  506575.,  508500.,
      515350.,  517300.,  519250.,  521200.,  528175.,  530150.,  532125.,
      534100.,  541200.,  543200.,  545200.,  547200.,  541325.,  543450.,
      545575.,  547700.,  554750.,  556900.,  559050.,  561200.,  568375.,
      570550.,  572725.,  574900.,  582200.,  584400.,  586600.,  588800.,
      313735.,  315070.,  316405.,  317740.,  321790.,  323140.,  324490.,
      325840.,  329965.,  331330.,  332695.,  334060.,  338260.,  339640.,
      341020.,  342400.,  646700.,  649400.,  652100.,  654800.,  661600.,
      664320.,  667040.,  669760.,  676660.,  679400.,  682140.,  684880.,
      691880.,  694640.,  697400.,  700160.,  811525.,  815050.,  818575.,
      822100.,  830550.,  834100.,  837650.,  841200.,  849775.,  853350.,
      856925.,  860500.,  869200.,  872800.,  876400.,  880000.,  850125.,
      853850.,  857575.,  861300.,  869950.,  873700.,  877450.,  881200.,
      889975.,  893750.,  897525.,  901300.,  910200.,  914000.,  917800.,
      921600.,  483655.,  485950.,  488245.,  490540.,  495550.,  497860.,
      500170.,  502480.,  507565.,  509890.,  512215.,  514540.,  519700.,
      522040.,  524380.,  526720.,  263924.,  265928.,  267932.,  269936.,
      273440.,  275456.,  277472.,  279488.,  283052.,  285080.,  287108.,
      289136.,  292760.,  294800.,  296840.,  298880.,  320755.,  323350.,
      325945.,  328540.,  332890.,  335500.,  338110.,  340720.,  345145.,
      347770.,  350395.,  353020.,  357520.,  360160.,  362800.,  365440.,
      334315.,  337030.,  339745.,  342460.,  346930.,  349660.,  352390.,
      355120.,  359665.,  362410.,  365155.,  367900.,  372520.,  375280.,
      378040.,  380800.,  177249.,  178914.,  180579.,  182244.,  184818.,
      186492.,  188166.,  189840.,  192459.,  194142.,  195825.,  197508.,
      200172.,  201864.,  203556.,  205248.,  908276.,  911432.,  914588.,
      917744.,  924320.,  927488.,  930656.,  933824.,  940460.,  943640.,
      946820.,  950000.,  956696.,  959888.,  963080.,  966272.,  1129075.,
      1133110., 1137145., 1141180., 1149370., 1153420., 1157470., 1161520.,
      1169785., 1173850., 1177915., 1181980., 1190320., 1194400., 1198480.,
      1202560., 1161835., 1165990., 1170145., 1174300., 1182610., 1186780.,
      1190950., 1195120., 1203505., 1207690., 1211875., 1216060., 1224520.,
      1228720., 1232920., 1237120., 665697.,  668226.,  670755.,  673284.,
      678162.,  680700.,  683238.,  685776.,  690699.,  693246.,  695793.,
      698340.,  703308.,  705864.,  708420.,  710976.,  1289900., 1295800.,
      1301700., 1307600., 1317600., 1323520., 1329440., 1335360., 1345460.,
      1351400., 1357340., 1363280., 1373480., 1379440., 1385400., 1391360.,
      1583525., 1591050., 1598575., 1606100., 1618550., 1626100., 1633650.,
      1641200., 1653775., 1661350., 1668925., 1676500., 1689200., 1696800.,
      1704400., 1712000., 1622125., 1629850., 1637575., 1645300., 1657950.,
      1665700., 1673450., 1681200., 1693975., 1701750., 1709525., 1717300.,
      1730200., 1738000., 1745800., 1753600., 908455.,  913150.,  917845.,
      922540.,  929950.,  934660.,  939370.,  944080.,  951565.,  956290.,
      961015.,  965740.,  973300.,  978040.,  982780.,  987520.,  1547180.,
      1554360., 1561540., 1568720., 1580000., 1587200., 1594400., 1601600.,
      1612980., 1620200., 1627420., 1634640., 1646120., 1653360., 1660600.,
      1667840., 1892325., 1901450., 1910575., 1919700., 1933750., 1942900.,
      1952050., 1961200., 1975375., 1984550., 1993725., 2002900., 2017200.,
      2026400., 2035600., 2044800., 1930925., 1940250., 1949575., 1958900.,
      1973150., 1982500., 1991850., 2001200., 2015575., 2024950., 2034325.,
      2043700., 2058200., 2067600., 2077000., 2086400., 1078375., 1084030.,
      1089685., 1095340., 1103710., 1109380., 1115050., 1120720., 1129165.,
      1134850., 1140535., 1146220., 1154740., 1160440., 1166140., 1171840.,
      589172.,  593864.,  598556.,  603248.,  609440.,  614144.,  618848.,
      623552.,  629804.,  634520.,  639236.,  643952.,  650264.,  654992.,
      659720.,  664448.,  700435.,  706390.,  712345.,  718300.,  726010.,
      731980.,  737950.,  743920.,  751705.,  757690.,  763675.,  769660.,
      777520.,  783520.,  789520.,  795520.,  713995.,  720070.,  726145.,
      732220.,  740050.,  746140.,  752230.,  758320.,  766225.,  772330.,
      778435.,  784540.,  792520.,  798640.,  804760.,  810880.,  372801.,
      376482.,  380163.,  383844.,  388434.,  392124.,  395814.,  399504.,
      404139.,  407838.,  411537.,  415236.,  419916.,  423624.,  427332.,
      431040.,  1663604., 1669448., 1675292., 1681136., 1690400., 1696256.,
      1702112., 1707968., 1717292., 1723160., 1729028., 1734896., 1744280.,
      1750160., 1756040., 1761920., 2046355., 2053750., 2061145., 2068540.,
      2080090., 2087500., 2094910., 2102320., 2113945., 2121370., 2128795.,
      2136220., 2147920., 2155360., 2162800., 2170240., 2079115., 2086630.,
      2094145., 2101660., 2113330., 2120860., 2128390., 2135920., 2147665.,
      2155210., 2162755., 2170300., 2182120., 2189680., 2197240., 2204800.,
      1183809., 1188354., 1192899., 1197444., 1204338., 1208892., 1213446.,
      1218000., 1224939., 1229502., 1234065., 1238628., 1245612., 1250184.,
      1254756., 1259328., 2190380., 2200760., 2211140., 2221520., 2236000.,
      2246400., 2256800., 2267200., 2281780., 2292200., 2302620., 2313040.,
      2327720., 2338160., 2348600., 2359040., 2664325., 2677450., 2690575.,
      2703700., 2721750., 2734900., 2748050., 2761200., 2779375., 2792550.,
      2805725., 2818900., 2837200., 2850400., 2863600., 2876800., 2702925.,
      2716250., 2729575., 2742900., 2761150., 2774500., 2787850., 2801200.,
      2819575., 2832950., 2846325., 2859700., 2878200., 2891600., 2905000.,
      2918400., 1503175., 1511230., 1519285., 1527340., 1538110., 1546180.,
      1554250., 1562320., 1573165., 1581250., 1589335., 1597420., 1608340.,
      1616440., 1624540., 1632640., 2447660., 2459320., 2470980., 2482640.,
      2498400., 2510080., 2521760., 2533440., 2549300., 2561000., 2572700.,
      2584400., 2600360., 2612080., 2623800., 2635520., 2973125., 2987850.,
      3002575., 3017300., 3036950., 3051700., 3066450., 3081200., 3100975.,
      3115750., 3130525., 3145300., 3165200., 3180000., 3194800., 3209600.,
      3011725., 3026650., 3041575., 3056500., 3076350., 3091300., 3106250.,
      3121200., 3141175., 3156150., 3171125., 3186100., 3206200., 3221200.,
      3236200., 3251200., 1673095., 1682110., 1691125., 1700140., 1711870.,
      1720900., 1729930., 1738960., 1750765., 1759810., 1768855., 1777900.,
      1789780., 1798840., 1807900., 1816960., 914420.,  921800.,  929180.,
      936560.,  945440.,  952832.,  960224.,  967616.,  976556.,  983960.,
      991364.,  998768.,  1007768., 1015184., 1022600., 1030016., 1080115.,
      1089430., 1098745., 1108060., 1119130., 1128460., 1137790., 1147120.,
      1158265., 1167610., 1176955., 1186300., 1197520., 1206880., 1216240.,
      1225600., 1093675., 1103110., 1112545., 1121980., 1133170., 1142620.,
      1152070., 1161520., 1172785., 1182250., 1191715., 1201180., 1212520.,
      1222000., 1231480., 1240960., 568353.,  574050.,  579747.,  585444.,
      592050.,  597756.,  603462.,  609168.,  615819.,  621534.,  627249.,
      632964.,  639660.,  645384.,  651108.,  656832.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      483425.,  485250.,  487075.,  488900.,  495650.,  497500.,  499350.,
      501200.,  508075.,  509950.,  511825.,  513700.,  520700.,  522600.,
      524500.,  526400.,  522025.,  524050.,  526075.,  528100.,  535050.,
      537100.,  539150.,  541200.,  548275.,  550350.,  552425.,  554500.,
      561700.,  563800.,  565900.,  568000.,  792225.,  795650.,  799075.,
      802500.,  810850.,  814300.,  817750.,  821200.,  829675.,  833150.,
      836625.,  840100.,  848700.,  852200.,  855700.,  859200.,  830825.,
      834450.,  838075.,  841700.,  850250.,  853900.,  857550.,  861200.,
      869875.,  873550.,  877225.,  880900.,  889700.,  893400.,  897100.,
      900800.,  1564225., 1571650., 1579075., 1586500., 1598850., 1606300.,
      1613750., 1621200., 1633675., 1641150., 1648625., 1656100., 1668700.,
      1676200., 1683700., 1691200., 1602825., 1610450., 1618075., 1625700.,
      1638250., 1645900., 1653550., 1661200., 1673875., 1681550., 1689225.,
      1696900., 1709700., 1717400., 1725100., 1732800., 1873025., 1882050.,
      1891075., 1900100., 1914050., 1923100., 1932150., 1941200., 1955275.,
      1964350., 1973425., 1982500., 1996700., 2005800., 2014900., 2024000.,
      1911625., 1920850., 1930075., 1939300., 1953450., 1962700., 1971950.,
      1981200., 1995475., 2004750., 2014025., 2023300., 2037700., 2047000.,
      2056300., 2065600., 2645025., 2658050., 2671075., 2684100., 2702050.,
      2715100., 2728150., 2741200., 2759275., 2772350., 2785425., 2798500.,
      2816700., 2829800., 2842900., 2856000., 2683625., 2696850., 2710075.,
      2723300., 2741450., 2754700., 2767950., 2781200., 2799475., 2812750.,
      2826025., 2839300., 2857700., 2871000., 2884300., 2897600., 2953825.,
      2968450., 2983075., 2997700., 3017250., 3031900., 3046550., 3061200.,
      3080875., 3095550., 3110225., 3124900., 3144700., 3159400., 3174100.,
      3188800., 2992425., 3007250., 3022075., 3036900., 3056650., 3071500.,
      3086350., 3101200., 3121075., 3135950., 3150825., 3165700., 3185700.,
      3200600., 3215500., 3230400.};
  const std::array<int, 4> in_shape = {{3, 7, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3190.,  4310.,  4850.,  5390.,  3213.,  8100.,  10350., 11000., 11650.,
      6730.,  13500., 16850., 17500., 18150., 10330., 5770.,  7010.,  7250.,
      7490.,  4023.,  18730., 23210., 23750., 24290., 13923., 27000., 33100.,
      33750., 34400., 19330., 32400., 39600., 40250., 40900., 22930., 12910.,
      15410., 15650., 15890., 8433.,  34270., 42110., 42650., 43190., 24633.,
      45900., 55850., 56500., 57150., 31930., 51300., 62350., 63000., 63650.,
      35530., 20050., 23810., 24050., 24290., 12843.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10025., 10675., 11325., 16525., 17175., 17825., 32775., 33425., 34075.,
      39275., 39925., 40575., 55525., 56175., 56825., 62025., 62675., 63325.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6230.,   6380.,   8410.,   8620.,   9460.,   9700.,   10510.,  10780.,
      6255.,   6426.,   15750.,  16200.,  20100.,  20700.,  21350.,  22000.,
      22600.,  23300.,  13025.,  13460.,  26150.,  27000.,  32600.,  33700.,
      33850.,  35000.,  35100.,  36300.,  19925.,  20660.,  10910.,  11540.,
      13210.,  14020.,  13660.,  14500.,  14110.,  14980.,  7515.,   8046.,
      36470.,  37460.,  45160.,  46420.,  46210.,  47500.,  47260.,  48580.,
      27045.,  27846.,  52150.,  54000.,  63850.,  66200.,  65100.,  67500.,
      66350.,  68800.,  37175.,  38660.,  62550.,  64800.,  76350.,  79200.,
      77600.,  80500.,  78850.,  81800.,  44075.,  45860.,  24350.,  25820.,
      28960.,  30820.,  29410.,  31300.,  29860.,  31780.,  15705.,  16866.,
      66710.,  68540.,  81910.,  84220.,  82960.,  85300.,  84010.,  86380.,
      47835.,  49266.,  88550.,  91800.,  107600., 111700., 108850., 113000.,
      110100., 114300., 61325.,  63860.,  98950.,  102600., 120100., 124700.,
      121350., 126000., 122600., 127300., 68225.,  71060.,  37790.,  40100.,
      44710.,  47620.,  45160.,  48100.,  45610.,  48580.,  23895.,  25686.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19475.,  20050.,  20725.,  21350.,  21975.,  22650.,  31975.,  33050.,
      33225.,  34350.,  34475.,  35650.,  63225.,  65550.,  64475.,  66850.,
      65725.,  68150.,  75725.,  78550.,  76975.,  79850.,  78225.,  81150.,
      106975., 111050., 108225., 112350., 109475., 113650., 119475., 124050.,
      120725., 125350., 121975., 126650.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12310.,  12460.,  12610.,  12760.,  16610.,  16820.,  17030.,  17240.,
      18680.,  18920.,  19160.,  19400.,  20750.,  21020.,  21290.,  21560.,
      12339.,  12510.,  12681.,  12852.,  31050.,  31500.,  31950.,  32400.,
      39600.,  40200.,  40800.,  41400.,  42050.,  42700.,  43350.,  44000.,
      44500.,  45200.,  45900.,  46600.,  25615.,  26050.,  26485.,  26920.,
      51450.,  52300.,  53150.,  54000.,  64100.,  65200.,  66300.,  67400.,
      66550.,  67700.,  68850.,  70000.,  69000.,  70200.,  71400.,  72600.,
      39115.,  39850.,  40585.,  41320.,  21190.,  21820.,  22450.,  23080.,
      25610.,  26420.,  27230.,  28040.,  26480.,  27320.,  28160.,  29000.,
      27350.,  28220.,  29090.,  29960.,  14499.,  15030.,  15561.,  16092.,
      71950.,  72940.,  73930.,  74920.,  89060.,  90320.,  91580.,  92840.,
      91130.,  92420.,  93710.,  95000.,  93200.,  94520.,  95840.,  97160.,
      53289.,  54090.,  54891.,  55692.,  102450., 104300., 106150., 108000.,
      125350., 127700., 130050., 132400., 127800., 130200., 132600., 135000.,
      130250., 132700., 135150., 137600., 72865.,  74350.,  75835.,  77320.,
      122850., 125100., 127350., 129600., 149850., 152700., 155550., 158400.,
      152300., 155200., 158100., 161000., 154750., 157700., 160650., 163600.,
      86365.,  88150.,  89935.,  91720.,  47230.,  48700.,  50170.,  51640.,
      56060.,  57920.,  59780.,  61640.,  56930.,  58820.,  60710.,  62600.,
      57800.,  59720.,  61640.,  63560.,  30249.,  31410.,  32571.,  33732.,
      131590., 133420., 135250., 137080., 161510., 163820., 166130., 168440.,
      163580., 165920., 168260., 170600., 165650., 168020., 170390., 172760.,
      94239.,  95670.,  97101.,  98532.,  173850., 177100., 180350., 183600.,
      211100., 215200., 219300., 223400., 213550., 217700., 221850., 226000.,
      216000., 220200., 224400., 228600., 120115., 122650., 125185., 127720.,
      194250., 197900., 201550., 205200., 235600., 240200., 244800., 249400.,
      238050., 242700., 247350., 252000., 240500., 245200., 249900., 254600.,
      133615., 136450., 139285., 142120., 73270.,  75580.,  77890.,  80200.,
      86510.,  89420.,  92330.,  95240.,  87380.,  90320.,  93260.,  96200.,
      88250.,  91220.,  94190.,  97160.,  45999.,  47790.,  49581.,  51372.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38375.,  38950.,  39525.,  40100.,  40825.,  41450.,  42075.,  42700.,
      43275.,  43950.,  44625.,  45300.,  62875.,  63950.,  65025.,  66100.,
      65325.,  66450.,  67575.,  68700.,  67775.,  68950.,  70125.,  71300.,
      124125., 126450., 128775., 131100., 126575., 128950., 131325., 133700.,
      129025., 131450., 133875., 136300., 148625., 151450., 154275., 157100.,
      151075., 153950., 156825., 159700., 153525., 156450., 159375., 162300.,
      209875., 213950., 218025., 222100., 212325., 216450., 220575., 224700.,
      214775., 218950., 223125., 227300., 234375., 238950., 243525., 248100.,
      236825., 241450., 246075., 250700., 239275., 243950., 248625., 253300.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12028.,  12760.,  16295.,  17240.,  18395.,  19400.,  20495.,  21560.,
      12213.,  12852.,  30980.,  32400.,  39575.,  41400.,  42075.,  44000.,
      44575.,  46600.,  25705.,  26920.,  51780.,  54000.,  64575.,  67400.,
      67075.,  70000.,  69575.,  72600.,  39505.,  41320.,  21628.,  23080.,
      26195.,  28040.,  27095.,  29000.,  27995.,  29960.,  14913.,  16092.,
      72508.,  74920.,  89795.,  92840.,  91895.,  95000.,  93995.,  97160.,
      53793.,  55692.,  103780., 108000., 127075., 132400., 129575., 135000.,
      132075., 137600., 74005.,  77320.,  124580., 129600., 152075., 158400.,
      154575., 161000., 157075., 163600., 87805.,  91720.,  48508.,  51640.,
      57695.,  61640.,  58595.,  62600.,  59495.,  63560.,  31293.,  33732.,
      132988., 137080., 163295., 168440., 165395., 170600., 167495., 172760.,
      95373.,  98532.,  176580., 183600., 214575., 223400., 217075., 226000.,
      219575., 228600., 122305., 127720., 197380., 205200., 239575., 249400.,
      242075., 252000., 244575., 254600., 136105., 142120., 75388.,  80200.,
      89195.,  95240.,  90095.,  96200.,  90995.,  97160.,  47673.,  51372.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38325.,  40100.,  40825.,  42700.,  43325.,  45300.,  63325.,  66100.,
      65825.,  68700.,  68325.,  71300.,  125825., 131100., 128325., 133700.,
      130825., 136300., 150825., 157100., 153325., 159700., 155825., 162300.,
      213325., 222100., 215825., 224700., 218325., 227300., 238325., 248100.,
      240825., 250700., 243325., 253300.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23768.,  24056.,  25220.,  25520.,  32185.,  32590.,  34060.,  34480.,
      36325.,  36790.,  38320.,  38800.,  40465.,  40990.,  42580.,  43120.,
      24093.,  24426.,  25362.,  25704.,  61080.,  61960.,  63900.,  64800.,
      77975.,  79150.,  81600.,  82800.,  82875.,  84150.,  86700.,  88000.,
      87775.,  89150.,  91800.,  93200.,  50555.,  51410.,  52970.,  53840.,
      101880., 103560., 106300., 108000., 126975., 129150., 132600., 134800.,
      131875., 134150., 137700., 140000., 136775., 139150., 142800., 145200.,
      77555.,  79010.,  81170.,  82640.,  42008.,  43256.,  44900.,  46160.,
      50785.,  52390.,  54460.,  56080.,  52525.,  54190.,  56320.,  58000.,
      54265.,  55990.,  58180.,  59920.,  28773.,  29826.,  31122.,  32184.,
      143048., 145016., 147860., 149840., 177085., 179590., 183160., 185680.,
      181225., 183790., 187420., 190000., 185365., 187990., 191680., 194320.,
      105993., 107586., 109782., 111384., 203880., 207560., 212300., 216000.,
      249475., 254150., 260100., 264800., 254375., 259150., 265200., 270000.,
      259275., 264150., 270300., 275200., 145055., 148010., 151670., 154640.,
      244680., 249160., 254700., 259200., 298475., 304150., 311100., 316800.,
      303375., 309150., 316200., 322000., 308275., 314150., 321300., 327200.,
      172055., 175610., 179870., 183440., 94088.,  97016.,  100340., 103280.,
      111685., 115390., 119560., 123280., 113425., 117190., 121420., 125200.,
      115165., 118990., 123280., 127120., 60273.,  62586.,  65142.,  67464.,
      262328., 265976., 270500., 274160., 321985., 326590., 332260., 336880.,
      326125., 330790., 336520., 341200., 330265., 334990., 340780., 345520.,
      187893., 190746., 194202., 197064., 346680., 353160., 360700., 367200.,
      420975., 429150., 438600., 446800., 425875., 434150., 443700., 452000.,
      430775., 439150., 448800., 457200., 239555., 244610., 250370., 255440.,
      387480., 394760., 403100., 410400., 469975., 479150., 489600., 498800.,
      474875., 484150., 494700., 504000., 479775., 489150., 499800., 509200.,
      266555., 272210., 278570., 284240., 146168., 150776., 155780., 160400.,
      172585., 178390., 184660., 190480., 174325., 180190., 186520., 192400.,
      176065., 181990., 188380., 194320., 91773.,  95346.,  99162.,  102744.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      75525.,  76650.,  79050.,  80200.,  80425.,  81650.,  84150.,  85400.,
      85325.,  86650.,  89250.,  90600.,  124525., 126650., 130050., 132200.,
      129425., 131650., 135150., 137400., 134325., 136650., 140250., 142600.,
      247025., 251650., 257550., 262200., 251925., 256650., 262650., 267400.,
      256825., 261650., 267750., 272600., 296025., 301650., 308550., 314200.,
      300925., 306650., 313650., 319400., 305825., 311650., 318750., 324600.,
      418525., 426650., 436050., 444200., 423425., 431650., 441150., 449400.,
      428325., 436650., 446250., 454600., 467525., 476650., 487050., 496200.,
      472425., 481650., 492150., 501400., 477325., 486650., 497250., 506600.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      47248.,  47536.,  47824.,  48112.,  50140.,  50440.,  50740.,   51040.,
      63965.,  64370.,  64775.,  65180.,  67700.,  68120.,  68540.,   68960.,
      72185.,  72650.,  73115.,  73580.,  76160.,  76640.,  77120.,   77600.,
      80405.,  80930.,  81455.,  81980.,  84620.,  85160.,  85700.,   86240.,
      47853.,  48186.,  48519.,  48852.,  50382.,  50724.,  51066.,   51408.,
      121280., 122160., 123040., 123920., 126900., 127800., 128700.,  129600.,
      154775., 155950., 157125., 158300., 162000., 163200., 164400.,  165600.,
      164475., 165750., 167025., 168300., 172100., 173400., 174700.,  176000.,
      174175., 175550., 176925., 178300., 182200., 183600., 185000.,  186400.,
      100255., 101110., 101965., 102820., 105070., 105940., 106810.,  107680.,
      202080., 203760., 205440., 207120., 210900., 212600., 214300.,  216000.,
      251775., 253950., 256125., 258300., 263000., 265200., 267400.,  269600.,
      261475., 263750., 266025., 268300., 273100., 275400., 277700.,  280000.,
      271175., 273550., 275925., 278300., 283200., 285600., 288000.,  290400.,
      153655., 155110., 156565., 158020., 160870., 162340., 163810.,  165280.,
      82768.,  84016.,  85264.,  86512.,  88540.,  89800.,  91060.,   92320.,
      99965.,  101570., 103175., 104780., 107300., 108920., 110540.,  112160.,
      103385., 105050., 106715., 108380., 110960., 112640., 114320.,  116000.,
      106805., 108530., 110255., 111980., 114620., 116360., 118100.,  119840.,
      56493.,  57546.,  58599.,  59652.,  61182.,  62244.,  63306.,   64368.,
      284128., 286096., 288064., 290032., 293740., 295720., 297700.,  299680.,
      351665., 354170., 356675., 359180., 363800., 366320., 368840.,  371360.,
      359885., 362450., 365015., 367580., 372260., 374840., 377420.,  380000.,
      368105., 370730., 373355., 375980., 380720., 383360., 386000.,  388640.,
      210393., 211986., 213579., 215172., 217962., 219564., 221166.,  222768.,
      404080., 407760., 411440., 415120., 420900., 424600., 428300.,  432000.,
      494275., 498950., 503625., 508300., 515500., 520200., 524900.,  529600.,
      503975., 508750., 513525., 518300., 525600., 530400., 535200.,  540000.,
      513675., 518550., 523425., 528300., 535700., 540600., 545500.,  550400.,
      287155., 290110., 293065., 296020., 300370., 303340., 306310.,  309280.,
      484880., 489360., 493840., 498320., 504900., 509400., 513900.,  518400.,
      591275., 596950., 602625., 608300., 616500., 622200., 627900.,  633600.,
      600975., 606750., 612525., 618300., 626600., 632400., 638200.,  644000.,
      610675., 616550., 622425., 628300., 636700., 642600., 648500.,  654400.,
      340555., 344110., 347665., 351220., 356170., 359740., 363310.,  366880.,
      185248., 188176., 191104., 194032., 197740., 200680., 203620.,  206560.,
      219665., 223370., 227075., 230780., 235400., 239120., 242840.,  246560.,
      223085., 226850., 230615., 234380., 239060., 242840., 246620.,  250400.,
      226505., 230330., 234155., 237980., 242720., 246560., 250400.,  254240.,
      118233., 120546., 122859., 125172., 127962., 130284., 132606.,  134928.,
      521008., 524656., 528304., 531952., 537340., 541000., 544660.,  548320.,
      639365., 643970., 648575., 653180., 659900., 664520., 669140.,  673760.,
      647585., 652250., 656915., 661580., 668360., 673040., 677720.,  682400.,
      655805., 660530., 665255., 669980., 676820., 681560., 686300.,  691040.,
      372933., 375786., 378639., 381492., 385542., 388404., 391266.,  394128.,
      686880., 693360., 699840., 706320., 714900., 721400., 727900.,  734400.,
      833775., 841950., 850125., 858300., 869000., 877200., 885400.,  893600.,
      843475., 851750., 860025., 868300., 879100., 887400., 895700.,  904000.,
      853175., 861550., 869925., 878300., 889200., 897600., 906000.,  914400.,
      474055., 479110., 484165., 489220., 495670., 500740., 505810.,  510880.,
      767680., 774960., 782240., 789520., 798900., 806200., 813500.,  820800.,
      930775., 939950., 949125., 958300., 970000., 979200., 988400.,  997600.,
      940475., 949750., 959025., 968300., 980100., 989400., 998700.,  1008000.,
      950175., 959550., 968925., 978300., 990200., 999600., 1009000., 1018400.,
      527455., 533110., 538765., 544420., 551470., 557140., 562810.,  568480.,
      287728., 292336., 296944., 301552., 306940., 311560., 316180.,  320800.,
      339365., 345170., 350975., 356780., 363500., 369320., 375140.,  380960.,
      342785., 348650., 354515., 360380., 367160., 373040., 378920.,  384800.,
      346205., 352130., 358055., 363980., 370820., 376760., 382700.,  388640.,
      179973., 183546., 187119., 190692., 194742., 198324., 201906.,  205488.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      149925., 151050., 152175., 153300., 156950., 158100., 159250.,  160400.,
      159625., 160850., 162075., 163300., 167050., 168300., 169550.,  170800.,
      169325., 170650., 171975., 173300., 177150., 178500., 179850.,  181200.,
      246925., 249050., 251175., 253300., 257950., 260100., 262250.,  264400.,
      256625., 258850., 261075., 263300., 268050., 270300., 272550.,  274800.,
      266325., 268650., 270975., 273300., 278150., 280500., 282850.,  285200.,
      489425., 494050., 498675., 503300., 510450., 515100., 519750.,  524400.,
      499125., 503850., 508575., 513300., 520550., 525300., 530050.,  534800.,
      508825., 513650., 518475., 523300., 530650., 535500., 540350.,  545200.,
      586425., 592050., 597675., 603300., 611450., 617100., 622750.,  628400.,
      596125., 601850., 607575., 613300., 621550., 627300., 633050.,  638800.,
      605825., 611650., 617475., 623300., 631650., 637500., 643350.,  649200.,
      828925., 837050., 845175., 853300., 863950., 872100., 880250.,  888400.,
      838625., 846850., 855075., 863300., 874050., 882300., 890550.,  898800.,
      848325., 856650., 864975., 873300., 884150., 892500., 900850.,  909200.,
      925925., 935050., 944175., 953300., 964950., 974100., 983250.,  992400.,
      935625., 944850., 954075., 963300., 975050., 984300., 993550.,  1002800.,
      945325., 954650., 963975., 973300., 985150., 994500., 1003850., 1013200.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      46684.,  48112.,  49564.,  51040.,   63335.,  65180.,  67055.,  68960.,
      71615.,  73580.,  75575.,  77600.,   79895.,  81980.,  84095.,  86240.,
      47601.,  48852.,  50121.,  51408.,   121140., 123920., 126740., 129600.,
      154725., 158300., 161925., 165600.,  164525., 168300., 172125., 176000.,
      174325., 178300., 182325., 186400.,  100435., 102820., 105235., 107680.,
      202740., 207120., 211540., 216000.,  252725., 258300., 263925., 269600.,
      262525., 268300., 274125., 280000.,  272325., 278300., 284325., 290400.,
      154435., 158020., 161635., 165280.,  83644.,  86512.,  89404.,  92320.,
      101135., 104780., 108455., 112160.,  104615., 108380., 112175., 116000.,
      108095., 111980., 115895., 119840.,  57321.,  59652.,  62001.,  64368.,
      285244., 290032., 294844., 299680.,  353135., 359180., 365255., 371360.,
      361415., 367580., 373775., 380000.,  369695., 375980., 382295., 388640.,
      211401., 215172., 218961., 222768.,  406740., 415120., 423540., 432000.,
      497725., 508300., 518925., 529600.,  507525., 518300., 529125., 540000.,
      517325., 528300., 539325., 550400.,  289435., 296020., 302635., 309280.,
      488340., 498320., 508340., 518400.,  595725., 608300., 620925., 633600.,
      605525., 618300., 631125., 644000.,  615325., 628300., 641325., 654400.,
      343435., 351220., 359035., 366880.,  187804., 194032., 200284., 206560.,
      222935., 230780., 238655., 246560.,  226415., 234380., 242375., 250400.,
      229895., 237980., 246095., 254240.,  120321., 125172., 130041., 134928.,
      523804., 531952., 540124., 548320.,  642935., 653180., 663455., 673760.,
      651215., 661580., 671975., 682400.,  659495., 669980., 680495., 691040.,
      375201., 381492., 387801., 394128.,  692340., 706320., 720340., 734400.,
      840725., 858300., 875925., 893600.,  850525., 868300., 886125., 904000.,
      860325., 878300., 896325., 914400.,  478435., 489220., 500035., 510880.,
      773940., 789520., 805140., 820800.,  938725., 958300., 977925., 997600.,
      948525., 968300., 988125., 1008000., 958325., 978300., 998325., 1018400.,
      532435., 544420., 556435., 568480.,  291964., 301552., 311164., 320800.,
      344735., 356780., 368855., 380960.,  348215., 360380., 372575., 384800.,
      351695., 363980., 376295., 388640.,  183321., 190692., 198081., 205488.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      149825., 153300., 156825., 160400.,  159625., 163300., 167025., 170800.,
      169425., 173300., 177225., 181200.,  247825., 253300., 258825., 264400.,
      257625., 263300., 269025., 274800.,  267425., 273300., 279225., 285200.,
      492825., 503300., 513825., 524400.,  502625., 513300., 524025., 534800.,
      512425., 523300., 534225., 545200.,  590825., 603300., 615825., 628400.,
      600625., 613300., 626025., 638800.,  610425., 623300., 636225., 649200.,
      835825., 853300., 870825., 888400.,  845625., 863300., 881025., 898800.,
      855425., 873300., 891225., 909200.,  933825., 953300., 972825., 992400.,
      943625., 963300., 983025., 1002800., 953425., 973300., 993225., 1013200.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      92804.,   93368.,   95648.,   96224.,   98540.,   99128.,   101480.,
      102080.,  125875.,  126670.,  129550.,  130360.,  133285.,  134110.,
      137080.,  137920.,  142315.,  143230.,  146230.,  147160.,  150205.,
      151150.,  154240.,  155200.,  158755.,  159790.,  162910.,  163960.,
      167125.,  168190.,  171400.,  172480.,  94545.,   95202.,   97038.,
      97704.,   99567.,   100242.,  102132.,  102816.,  240540.,  242280.,
      246080.,  247840.,  251700.,  253480.,  257400.,  259200.,  307125.,
      309450.,  314250.,  316600.,  321475.,  323850.,  328800.,  331200.,
      326525.,  329050.,  334050.,  336600.,  341675.,  344250.,  349400.,
      352000.,  345925.,  348650.,  353850.,  356600.,  361875.,  364650.,
      370000.,  372800.,  199175.,  200870.,  203930.,  205640.,  208745.,
      210470.,  213620.,  215360.,  402140.,  405480.,  410880.,  414240.,
      419700.,  423080.,  428600.,  432000.,  501125.,  505450.,  512250.,
      516600.,  523475.,  527850.,  534800.,  539200.,  520525.,  525050.,
      532050.,  536600.,  543675.,  548250.,  555400.,  560000.,  539925.,
      544650.,  551850.,  556600.,  563875.,  568650.,  576000.,  580800.,
      305975.,  308870.,  313130.,  316040.,  320345.,  323270.,  327620.,
      330560.,  164804.,  167288.,  170528.,  173024.,  176300.,  178808.,
      182120.,  184640.,  199075.,  202270.,  206350.,  209560.,  213685.,
      216910.,  221080.,  224320.,  205915.,  209230.,  213430.,  216760.,
      221005.,  224350.,  228640.,  232000.,  212755.,  216190.,  220510.,
      223960.,  228325.,  231790.,  236200.,  239680.,  112545.,  114642.,
      117198.,  119304.,  121887.,  124002.,  126612.,  128736.,  566564.,
      570488.,  576128.,  580064.,  585740.,  589688.,  595400.,  599360.,
      701275.,  706270.,  713350.,  718360.,  725485.,  730510.,  737680.,
      742720.,  717715.,  722830.,  730030.,  735160.,  742405.,  747550.,
      754840.,  760000.,  734155.,  739390.,  746710.,  751960.,  759325.,
      764590.,  772000.,  777280.,  419625.,  422802.,  427158.,  430344.,
      434727.,  437922.,  442332.,  445536.,  806140.,  813480.,  822880.,
      830240.,  839700.,  847080.,  856600.,  864000.,  986125.,  995450.,
      1007250., 1016600., 1028475., 1037850., 1049800., 1059200., 1005525.,
      1015050., 1027050., 1036600., 1048675., 1058250., 1070400., 1080000.,
      1024925., 1034650., 1046850., 1056600., 1068875., 1078650., 1091000.,
      1100800., 572975.,  578870.,  586130.,  592040.,  599345.,  605270.,
      612620.,  618560.,  967740.,  976680.,  987680.,  996640.,  1007700.,
      1016680., 1027800., 1036800., 1180125., 1191450., 1205250., 1216600.,
      1230475., 1241850., 1255800., 1267200., 1199525., 1211050., 1225050.,
      1236600., 1250675., 1262250., 1276400., 1288000., 1218925., 1230650.,
      1244850., 1256600., 1270875., 1282650., 1297000., 1308800., 679775.,
      686870.,  695330.,  702440.,  710945.,  718070.,  726620.,  733760.,
      369764.,  375608.,  382208.,  388064.,  394700.,  400568.,  407240.,
      413120.,  438475.,  445870.,  454150.,  461560.,  469885.,  477310.,
      485680.,  493120.,  445315.,  452830.,  461230.,  468760.,  477205.,
      484750.,  493240.,  500800.,  452155.,  459790.,  468310.,  475960.,
      484525.,  492190.,  500800.,  508480.,  236025.,  240642.,  245718.,
      250344.,  255447.,  260082.,  265212.,  269856.,  1040324., 1047608.,
      1056608., 1063904., 1072940., 1080248., 1089320., 1096640., 1276675.,
      1285870., 1297150., 1306360., 1317685., 1326910., 1338280., 1347520.,
      1293115., 1302430., 1313830., 1323160., 1334605., 1343950., 1355440.,
      1364800., 1309555., 1318990., 1330510., 1339960., 1351525., 1360990.,
      1372600., 1382080., 744705.,  750402.,  757278.,  762984.,  769887.,
      775602.,  782532.,  788256.,  1371740., 1384680., 1399680., 1412640.,
      1427700., 1440680., 1455800., 1468800., 1665125., 1681450., 1700250.,
      1716600., 1735475., 1751850., 1770800., 1787200., 1684525., 1701050.,
      1720050., 1736600., 1755675., 1772250., 1791400., 1808000., 1703925.,
      1720650., 1739850., 1756600., 1775875., 1792650., 1812000., 1828800.,
      946775.,  956870.,  968330.,  978440.,  989945.,  1000070., 1011620.,
      1021760., 1533340., 1547880., 1564480., 1579040., 1595700., 1610280.,
      1627000., 1641600., 1859125., 1877450., 1898250., 1916600., 1937475.,
      1955850., 1976800., 1995200., 1878525., 1897050., 1918050., 1936600.,
      1957675., 1976250., 1997400., 2016000., 1897925., 1916650., 1937850.,
      1956600., 1977875., 1996650., 2018000., 2036800., 1053575., 1064870.,
      1077530., 1088840., 1101545., 1112870., 1125620., 1136960., 574724.,
      583928.,  593888.,  603104.,  613100.,  622328.,  632360.,  641600.,
      677875.,  689470.,  701950.,  713560.,  726085.,  737710.,  750280.,
      761920.,  684715.,  696430.,  709030.,  720760.,  733405.,  745150.,
      757840.,  769600.,  691555.,  703390.,  716110.,  727960.,  740725.,
      752590.,  765400.,  777280.,  359505.,  366642.,  374238.,  381384.,
      389007.,  396162.,  403812.,  410976.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      297425.,  299650.,  304350.,  306600.,  311375.,  313650.,  318500.,
      320800.,  316825.,  319250.,  324150.,  326600.,  331575.,  334050.,
      339100.,  341600.,  336225.,  338850.,  343950.,  346600.,  351775.,
      354450.,  359700.,  362400.,  491425.,  495650.,  502350.,  506600.,
      513375.,  517650.,  524500.,  528800.,  510825.,  515250.,  522150.,
      526600.,  533575.,  538050.,  545100.,  549600.,  530225.,  534850.,
      541950.,  546600.,  553775.,  558450.,  565700.,  570400.,  976425.,
      985650.,  997350.,  1006600., 1018375., 1027650., 1039500., 1048800.,
      995825.,  1005250., 1017150., 1026600., 1038575., 1048050., 1060100.,
      1069600., 1015225., 1024850., 1036950., 1046600., 1058775., 1068450.,
      1080700., 1090400., 1170425., 1181650., 1195350., 1206600., 1220375.,
      1231650., 1245500., 1256800., 1189825., 1201250., 1215150., 1226600.,
      1240575., 1252050., 1266100., 1277600., 1209225., 1220850., 1234950.,
      1246600., 1260775., 1272450., 1286700., 1298400., 1655425., 1671650.,
      1690350., 1706600., 1725375., 1741650., 1760500., 1776800., 1674825.,
      1691250., 1710150., 1726600., 1745575., 1762050., 1781100., 1797600.,
      1694225., 1710850., 1729950., 1746600., 1765775., 1782450., 1801700.,
      1818400., 1849425., 1867650., 1888350., 1906600., 1927375., 1945650.,
      1966500., 1984800., 1868825., 1887250., 1908150., 1926600., 1947575.,
      1966050., 1987100., 2005600., 1888225., 1906850., 1927950., 1946600.,
      1967775., 1986450., 2007700., 2026400.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x7x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      185044.,  185608.,  186172.,  186736.,  190720.,  191296.,  191872.,
      192448.,  196492.,  197080.,  197668.,  198256.,  202360.,  202960.,
      203560.,  204160.,  250955.,  251750.,  252545.,  253340.,  258290.,
      259100.,  259910.,  260720.,  265745.,  266570.,  267395.,  268220.,
      273320.,  274160.,  275000.,  275840.,  283715.,  284630.,  285545.,
      286460.,  291530.,  292460.,  293390.,  294320.,  299465.,  300410.,
      301355.,  302300.,  307520.,  308480.,  309440.,  310400.,  316475.,
      317510.,  318545.,  319580.,  324770.,  325820.,  326870.,  327920.,
      333185.,  334250.,  335315.,  336380.,  341720.,  342800.,  343880.,
      344960.,  188433.,  189090.,  189747.,  190404.,  193410.,  194076.,
      194742.,  195408.,  198459.,  199134.,  199809.,  200484.,  203580.,
      204264.,  204948.,  205632.,  479340.,  481080.,  482820.,  484560.,
      490400.,  492160.,  493920.,  495680.,  501620.,  503400.,  505180.,
      506960.,  513000.,  514800.,  516600.,  518400.,  611925.,  614250.,
      616575.,  618900.,  626150.,  628500.,  630850.,  633200.,  640575.,
      642950.,  645325.,  647700.,  655200.,  657600.,  660000.,  662400.,
      650525.,  653050.,  655575.,  658100.,  665550.,  668100.,  670650.,
      673200.,  680775.,  683350.,  685925.,  688500.,  696200.,  698800.,
      701400.,  704000.,  689125.,  691850.,  694575.,  697300.,  704950.,
      707700.,  710450.,  713200.,  720975.,  723750.,  726525.,  729300.,
      737200.,  740000.,  742800.,  745600.,  396655.,  398350.,  400045.,
      401740.,  406150.,  407860.,  409570.,  411280.,  415765.,  417490.,
      419215.,  420940.,  425500.,  427240.,  428980.,  430720.,  800940.,
      804280.,  807620.,  810960.,  818400.,  821760.,  825120.,  828480.,
      836020.,  839400.,  842780.,  846160.,  853800.,  857200.,  860600.,
      864000.,  997925.,  1002250., 1006575., 1010900., 1020150., 1024500.,
      1028850., 1033200., 1042575., 1046950., 1051325., 1055700., 1065200.,
      1069600., 1074000., 1078400., 1036525., 1041050., 1045575., 1050100.,
      1059550., 1064100., 1068650., 1073200., 1082775., 1087350., 1091925.,
      1096500., 1106200., 1110800., 1115400., 1120000., 1075125., 1079850.,
      1084575., 1089300., 1098950., 1103700., 1108450., 1113200., 1122975.,
      1127750., 1132525., 1137300., 1147200., 1152000., 1156800., 1161600.,
      609055.,  611950.,  614845.,  617740.,  623350.,  626260.,  629170.,
      632080.,  637765.,  640690.,  643615.,  646540.,  652300.,  655240.,
      658180.,  661120.,  327124.,  329608.,  332092.,  334576.,  338560.,
      341056.,  343552.,  346048.,  350092.,  352600.,  355108.,  357616.,
      361720.,  364240.,  366760.,  369280.,  394955.,  398150.,  401345.,
      404540.,  409490.,  412700.,  415910.,  419120.,  424145.,  427370.,
      430595.,  433820.,  438920.,  442160.,  445400.,  448640.,  408515.,
      411830.,  415145.,  418460.,  423530.,  426860.,  430190.,  433520.,
      438665.,  442010.,  445355.,  448700.,  453920.,  457280.,  460640.,
      464000.,  422075.,  425510.,  428945.,  432380.,  437570.,  441020.,
      444470.,  447920.,  453185.,  456650.,  460115.,  463580.,  468920.,
      472400.,  475880.,  479360.,  222993.,  225090.,  227187.,  229284.,
      232290.,  234396.,  236502.,  238608.,  241659.,  243774.,  245889.,
      248004.,  251100.,  253224.,  255348.,  257472.,  1129204., 1133128.,
      1137052., 1140976., 1148320., 1152256., 1156192., 1160128., 1167532.,
      1171480., 1175428., 1179376., 1186840., 1190800., 1194760., 1198720.,
      1397555., 1402550., 1407545., 1412540., 1421690., 1426700., 1431710.,
      1436720., 1445945., 1450970., 1455995., 1461020., 1470320., 1475360.,
      1480400., 1485440., 1430315., 1435430., 1440545., 1445660., 1454930.,
      1460060., 1465190., 1470320., 1479665., 1484810., 1489955., 1495100.,
      1504520., 1509680., 1514840., 1520000., 1463075., 1468310., 1473545.,
      1478780., 1488170., 1493420., 1498670., 1503920., 1513385., 1518650.,
      1523915., 1529180., 1538720., 1544000., 1549280., 1554560., 836073.,
      839250.,  842427.,  845604.,  851130.,  854316.,  857502.,  860688.,
      866259.,  869454.,  872649.,  875844.,  881460.,  884664.,  887868.,
      891072.,  1604940., 1612280., 1619620., 1626960., 1638400., 1645760.,
      1653120., 1660480., 1672020., 1679400., 1686780., 1694160., 1705800.,
      1713200., 1720600., 1728000., 1962925., 1972250., 1981575., 1990900.,
      2005150., 2014500., 2023850., 2033200., 2047575., 2056950., 2066325.,
      2075700., 2090200., 2099600., 2109000., 2118400., 2001525., 2011050.,
      2020575., 2030100., 2044550., 2054100., 2063650., 2073200., 2087775.,
      2097350., 2106925., 2116500., 2131200., 2140800., 2150400., 2160000.,
      2040125., 2049850., 2059575., 2069300., 2083950., 2093700., 2103450.,
      2113200., 2127975., 2137750., 2147525., 2157300., 2172200., 2182000.,
      2191800., 2201600., 1140055., 1145950., 1151845., 1157740., 1166350.,
      1172260., 1178170., 1184080., 1192765., 1198690., 1204615., 1210540.,
      1219300., 1225240., 1231180., 1237120., 1926540., 1935480., 1944420.,
      1953360., 1966400., 1975360., 1984320., 1993280., 2006420., 2015400.,
      2024380., 2033360., 2046600., 2055600., 2064600., 2073600., 2348925.,
      2360250., 2371575., 2382900., 2399150., 2410500., 2421850., 2433200.,
      2449575., 2460950., 2472325., 2483700., 2500200., 2511600., 2523000.,
      2534400., 2387525., 2399050., 2410575., 2422100., 2438550., 2450100.,
      2461650., 2473200., 2489775., 2501350., 2512925., 2524500., 2541200.,
      2552800., 2564400., 2576000., 2426125., 2437850., 2449575., 2461300.,
      2477950., 2489700., 2501450., 2513200., 2529975., 2541750., 2553525.,
      2565300., 2582200., 2594000., 2605800., 2617600., 1352455., 1359550.,
      1366645., 1373740., 1383550., 1390660., 1397770., 1404880., 1414765.,
      1421890., 1429015., 1436140., 1446100., 1453240., 1460380., 1467520.,
      733684.,  739528.,  745372.,  751216.,  758560.,  764416.,  770272.,
      776128.,  783532.,  789400.,  795268.,  801136.,  808600.,  814480.,
      820360.,  826240.,  869555.,  876950.,  884345.,  891740.,  900890.,
      908300.,  915710.,  923120.,  932345.,  939770.,  947195.,  954620.,
      963920.,  971360.,  978800.,  986240.,  883115.,  890630.,  898145.,
      905660.,  914930.,  922460.,  929990.,  937520.,  946865.,  954410.,
      961955.,  969500.,  978920.,  986480.,  994040.,  1001600., 896675.,
      904310.,  911945.,  919580.,  928970.,  936620.,  944270.,  951920.,
      961385.,  969050.,  976715.,  984380.,  993920.,  1001600., 1009280.,
      1016960., 467433.,  472050.,  476667.,  481284.,  486810.,  491436.,
      496062.,  500688.,  506259.,  510894.,  515529.,  520164.,  525780.,
      530424.,  535068.,  539712.,  2073364., 2080648., 2087932., 2095216.,
      2105920., 2113216., 2120512., 2127808., 2138572., 2145880., 2153188.,
      2160496., 2171320., 2178640., 2185960., 2193280., 2544155., 2553350.,
      2562545., 2571740., 2585090., 2594300., 2603510., 2612720., 2626145.,
      2635370., 2644595., 2653820., 2667320., 2676560., 2685800., 2695040.,
      2576915., 2586230., 2595545., 2604860., 2618330., 2627660., 2636990.,
      2646320., 2659865., 2669210., 2678555., 2687900., 2701520., 2710880.,
      2720240., 2729600., 2609675., 2619110., 2628545., 2637980., 2651570.,
      2661020., 2670470., 2679920., 2693585., 2703050., 2712515., 2721980.,
      2735720., 2745200., 2754680., 2764160., 1483713., 1489410., 1495107.,
      1500804., 1508850., 1514556., 1520262., 1525968., 1534059., 1539774.,
      1545489., 1551204., 1559340., 1565064., 1570788., 1576512., 2730540.,
      2743480., 2756420., 2769360., 2786400., 2799360., 2812320., 2825280.,
      2842420., 2855400., 2868380., 2881360., 2898600., 2911600., 2924600.,
      2937600., 3313925., 3330250., 3346575., 3362900., 3384150., 3400500.,
      3416850., 3433200., 3454575., 3470950., 3487325., 3503700., 3525200.,
      3541600., 3558000., 3574400., 3352525., 3369050., 3385575., 3402100.,
      3423550., 3440100., 3456650., 3473200., 3494775., 3511350., 3527925.,
      3544500., 3566200., 3582800., 3599400., 3616000., 3391125., 3407850.,
      3424575., 3441300., 3462950., 3479700., 3496450., 3513200., 3534975.,
      3551750., 3568525., 3585300., 3607200., 3624000., 3640800., 3657600.,
      1883455., 1893550., 1903645., 1913740., 1926550., 1936660., 1946770.,
      1956880., 1969765., 1979890., 1990015., 2000140., 2013100., 2023240.,
      2033380., 2043520., 3052140., 3066680., 3081220., 3095760., 3114400.,
      3128960., 3143520., 3158080., 3176820., 3191400., 3205980., 3220560.,
      3239400., 3254000., 3268600., 3283200., 3699925., 3718250., 3736575.,
      3754900., 3778150., 3796500., 3814850., 3833200., 3856575., 3874950.,
      3893325., 3911700., 3935200., 3953600., 3972000., 3990400., 3738525.,
      3757050., 3775575., 3794100., 3817550., 3836100., 3854650., 3873200.,
      3896775., 3915350., 3933925., 3952500., 3976200., 3994800., 4013400.,
      4032000., 3777125., 3795850., 3814575., 3833300., 3856950., 3875700.,
      3894450., 3913200., 3936975., 3955750., 3974525., 3993300., 4017200.,
      4036000., 4054800., 4073600., 2095855., 2107150., 2118445., 2129740.,
      2143750., 2155060., 2166370., 2177680., 2191765., 2203090., 2214415.,
      2225740., 2239900., 2251240., 2262580., 2273920., 1140244., 1149448.,
      1158652., 1167856., 1178560., 1187776., 1196992., 1206208., 1216972.,
      1226200., 1235428., 1244656., 1255480., 1264720., 1273960., 1283200.,
      1344155., 1355750., 1367345., 1378940., 1392290., 1403900., 1415510.,
      1427120., 1440545., 1452170., 1463795., 1475420., 1488920., 1500560.,
      1512200., 1523840., 1357715., 1369430., 1381145., 1392860., 1406330.,
      1418060., 1429790., 1441520., 1455065., 1466810., 1478555., 1490300.,
      1503920., 1515680., 1527440., 1539200., 1371275., 1383110., 1394945.,
      1406780., 1420370., 1432220., 1444070., 1455920., 1469585., 1481450.,
      1493315., 1505180., 1518920., 1530800., 1542680., 1554560., 711873.,
      719010.,  726147.,  733284.,  741330.,  748476.,  755622.,  762768.,
      770859.,  778014.,  785169.,  792324.,  800460.,  807624.,  814788.,
      821952.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x7x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      592625.,  594850.,  597075.,  599300.,  606450.,  608700.,  610950.,
      613200.,  620475.,  622750.,  625025.,  627300.,  634700.,  637000.,
      639300.,  641600.,  631225.,  633650.,  636075.,  638500.,  645850.,
      648300.,  650750.,  653200.,  660675.,  663150.,  665625.,  668100.,
      675700.,  678200.,  680700.,  683200.,  669825.,  672450.,  675075.,
      677700.,  685250.,  687900.,  690550.,  693200.,  700875.,  703550.,
      706225.,  708900.,  716700.,  719400.,  722100.,  724800.,  978625.,
      982850.,  987075.,  991300.,  1000450., 1004700., 1008950., 1013200.,
      1022475., 1026750., 1031025., 1035300., 1044700., 1049000., 1053300.,
      1057600., 1017225., 1021650., 1026075., 1030500., 1039850., 1044300.,
      1048750., 1053200., 1062675., 1067150., 1071625., 1076100., 1085700.,
      1090200., 1094700., 1099200., 1055825., 1060450., 1065075., 1069700.,
      1079250., 1083900., 1088550., 1093200., 1102875., 1107550., 1112225.,
      1116900., 1126700., 1131400., 1136100., 1140800., 1943625., 1952850.,
      1962075., 1971300., 1985450., 1994700., 2003950., 2013200., 2027475.,
      2036750., 2046025., 2055300., 2069700., 2079000., 2088300., 2097600.,
      1982225., 1991650., 2001075., 2010500., 2024850., 2034300., 2043750.,
      2053200., 2067675., 2077150., 2086625., 2096100., 2110700., 2120200.,
      2129700., 2139200., 2020825., 2030450., 2040075., 2049700., 2064250.,
      2073900., 2083550., 2093200., 2107875., 2117550., 2127225., 2136900.,
      2151700., 2161400., 2171100., 2180800., 2329625., 2340850., 2352075.,
      2363300., 2379450., 2390700., 2401950., 2413200., 2429475., 2440750.,
      2452025., 2463300., 2479700., 2491000., 2502300., 2513600., 2368225.,
      2379650., 2391075., 2402500., 2418850., 2430300., 2441750., 2453200.,
      2469675., 2481150., 2492625., 2504100., 2520700., 2532200., 2543700.,
      2555200., 2406825., 2418450., 2430075., 2441700., 2458250., 2469900.,
      2481550., 2493200., 2509875., 2521550., 2533225., 2544900., 2561700.,
      2573400., 2585100., 2596800., 3294625., 3310850., 3327075., 3343300.,
      3364450., 3380700., 3396950., 3413200., 3434475., 3450750., 3467025.,
      3483300., 3504700., 3521000., 3537300., 3553600., 3333225., 3349650.,
      3366075., 3382500., 3403850., 3420300., 3436750., 3453200., 3474675.,
      3491150., 3507625., 3524100., 3545700., 3562200., 3578700., 3595200.,
      3371825., 3388450., 3405075., 3421700., 3443250., 3459900., 3476550.,
      3493200., 3514875., 3531550., 3548225., 3564900., 3586700., 3603400.,
      3620100., 3636800., 3680625., 3698850., 3717075., 3735300., 3758450.,
      3776700., 3794950., 3813200., 3836475., 3854750., 3873025., 3891300.,
      3914700., 3933000., 3951300., 3969600., 3719225., 3737650., 3756075.,
      3774500., 3797850., 3816300., 3834750., 3853200., 3876675., 3895150.,
      3913625., 3932100., 3955700., 3974200., 3992700., 4011200., 3757825.,
      3776450., 3795075., 3813700., 3837250., 3855900., 3874550., 3893200.,
      3916875., 3935550., 3954225., 3972900., 3996700., 4015400., 4034100.,
      4052800.};
  const std::array<int, 4> in_shape = {{3, 7, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3008.,  5100.,  5720.,  3404.,  5890.,  9600.,  10250., 5920.,
      8830.,  14150., 14800., 8440.,  3780.,  5780.,  6020.,  3240.,
      14096., 22460., 23080., 13148., 17650., 27800., 28450., 16000.,
      20590., 32350., 33000., 18520., 8316.,  12500., 12740., 6768.,
      25184., 39820., 40440., 22892., 29410., 46000., 46650., 26080.,
      32350., 50550., 51200., 28600., 12852., 19220., 19460., 10296.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {7325.,  7975.,  11875., 12525.,
                                         25525., 26175., 30075., 30725.,
                                         43725., 44375., 48275., 48925.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5866.,  6016.,  9930.,   10200., 11130.,  11440., 6610.,  6808.,  11435.,
      11780., 18600., 19200.,  19850., 20500.,  11435., 11840., 17105., 17660.,
      27350., 28300., 28600.,  29600., 16265.,  16880., 7164.,  7560.,  10885.,
      11560., 11335., 12040.,  6048.,  6480.,   27370., 28192., 43530., 44920.,
      44730., 46160., 25426.,  26296., 34115.,  35300., 53600., 55600., 54850.,
      56900., 30755., 32000.,  39785., 41180.,  62350., 64700., 63600., 66000.,
      35585., 37040., 15732.,  16632., 23485.,  25000., 23935., 25480., 12600.,
      13536., 48874., 50368.,  77130., 79640.,  78330., 80880., 44242., 45784.,
      56795., 58820., 88600.,  92000., 89850.,  93300., 50075., 52160., 62465.,
      64700., 97350., 101100., 98600., 102400., 54905., 57200., 24300., 25704.,
      36085., 38440., 36535.,  38920., 19152.,  20592.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14225., 14650., 15475., 15950., 22975., 23750., 24225., 25050.,
      49225., 51050., 50475., 52350., 57975., 60150., 59225., 61450.,
      84225., 87450., 85475., 88750., 92975., 96550., 94225., 97850.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11582.,  11732.,  11882.,  12032.,  19590.,  19860.,  20130.,  20400.,
      21950.,  22260.,  22570.,  22880.,  13022.,  13220.,  13418.,  13616.,
      22525.,  22870.,  23215.,  23560.,  36600.,  37200.,  37800.,  38400.,
      39050.,  39700.,  40350.,  41000.,  22465.,  22870.,  23275.,  23680.,
      33655.,  34210.,  34765.,  35320.,  53750.,  54700.,  55650.,  56600.,
      56200.,  57200.,  58200.,  59200.,  31915.,  32530.,  33145.,  33760.,
      13932.,  14328.,  14724.,  15120.,  21095.,  21770.,  22445.,  23120.,
      21965.,  22670.,  23375.,  24080.,  11664.,  12096.,  12528.,  12960.,
      53918.,  54740.,  55562.,  56384.,  85670.,  87060.,  88450.,  89840.,
      88030.,  89460.,  90890.,  92320.,  49982.,  50852.,  51722.,  52592.,
      67045.,  68230.,  69415.,  70600.,  105200., 107200., 109200., 111200.,
      107650., 109700., 111750., 113800., 60265.,  61510.,  62755.,  64000.,
      78175.,  79570.,  80965.,  82360.,  122350., 124700., 127050., 129400.,
      124800., 127200., 129600., 132000., 69715.,  71170.,  72625.,  74080.,
      30564.,  31464.,  32364.,  33264.,  45455.,  46970.,  48485.,  50000.,
      46325.,  47870.,  49415.,  50960.,  24264.,  25200.,  26136.,  27072.,
      96254.,  97748.,  99242.,  100736., 151750., 154260., 156770., 159280.,
      154110., 156660., 159210., 161760., 86942.,  88484.,  90026.,  91568.,
      111565., 113590., 115615., 117640., 173800., 177200., 180600., 184000.,
      176250., 179700., 183150., 186600., 98065.,  100150., 102235., 104320.,
      122695., 124930., 127165., 129400., 190950., 194700., 198450., 202200.,
      193400., 197200., 201000., 204800., 107515., 109810., 112105., 114400.,
      47196.,  48600.,  50004.,  51408.,  69815.,  72170.,  74525.,  76880.,
      70685.,  73070.,  75455.,  77840.,  36864.,  38304.,  39744.,  41184.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28025.,  28450.,  28875.,  29300.,  30475.,  30950.,  31425.,  31900.,
      45175.,  45950.,  46725.,  47500.,  47625.,  48450.,  49275.,  50100.,
      96625.,  98450.,  100275., 102100., 99075.,  100950., 102825., 104700.,
      113775., 115950., 118125., 120300., 116225., 118450., 120675., 122900.,
      165225., 168450., 171675., 174900., 167675., 170950., 174225., 177500.,
      182375., 185950., 189525., 193100., 184825., 188450., 192075., 195700.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11348.,  12032.,  19260.,  20400.,  21660.,  22880.,  12884.,  13616.,
      22465.,  23560.,  36575.,  38400.,  39075.,  41000.,  22525.,  23680.,
      33805.,  35320.,  54075.,  56600.,  56575.,  59200.,  32185.,  33760.,
      14175.,  15120.,  21545.,  23120.,  22445.,  24080.,  11979.,  12960.,
      54356.,  56384.,  86460.,  89840.,  88860.,  92320.,  50516.,  52592.,
      67825.,  70600.,  106575., 111200., 109075., 113800., 61165.,  64000.,
      79165.,  82360.,  124075., 129400., 126575., 132000., 70825.,  74080.,
      31311.,  33264.,  46745.,  50000.,  47645.,  50960.,  25083.,  27072.,
      97364.,  100736., 153660., 159280., 156060., 161760., 88148.,  91568.,
      113185., 117640., 176575., 184000., 179075., 186600., 99805.,  104320.,
      124525., 129400., 194075., 202200., 196575., 204800., 109465., 114400.,
      48447.,  51408.,  71945.,  76880.,  72845.,  77840.,  38187.,  41184.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      27825.,  29300.,  30325.,  31900.,  45325.,  47500.,  47825.,  50100.,
      97825.,  102100., 100325., 104700., 115325., 120300., 117825., 122900.,
      167825., 174900., 170325., 177500., 185325., 193100., 187825., 195700.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      22408.,  22696.,  23764.,  24064.,  38000.,  38520.,  40260.,  40800.,
      42720.,  43320.,  45140.,  45760.,  25384.,  25768.,  26836.,  27232.,
      44255.,  44930.,  46430.,  47120.,  71975.,  73150.,  75600.,  76800.,
      76875.,  78150.,  80700.,  82000.,  44255.,  45050.,  46550.,  47360.,
      66515.,  67610.,  69530.,  70640.,  106275., 108150., 111300., 113200.,
      111175., 113150., 116400., 118400., 63155.,  64370.,  66290.,  67520.,
      27567.,  28350.,  29448.,  30240.,  41755.,  43090.,  44890.,  46240.,
      43495.,  44890.,  46750.,  48160.,  23103.,  23958.,  25056.,  25920.,
      107080., 108712., 111124., 112768., 170160., 172920., 176900., 179680.,
      174880., 177720., 181780., 184640., 99304.,  101032., 103444., 105184.,
      133295., 135650., 138830., 141200., 209175., 213150., 218400., 222400.,
      214075., 218150., 223500., 227600., 119855., 122330., 125510., 128000.,
      155555., 158330., 161930., 164720., 243475., 248150., 254100., 258800.,
      248375., 253150., 259200., 264000., 138755., 141650., 145250., 148160.,
      60831.,  62622.,  64728.,  66528.,  90475.,  93490.,  96970.,  100000.,
      92215.,  95290.,  98830.,  101920., 48303.,  50166.,  52272.,  54144.,
      191752., 194728., 198484., 201472., 302320., 307320., 313540., 318560.,
      307040., 312120., 318420., 323520., 173224., 176296., 180052., 183136.,
      222335., 226370., 231230., 235280., 346375., 353150., 361200., 368000.,
      351275., 358150., 366300., 373200., 195455., 199610., 204470., 208640.,
      244595., 249050., 254330., 258800., 380675., 388150., 396900., 404400.,
      385575., 393150., 402000., 409600., 214355., 218930., 224210., 228800.,
      94095.,  96894.,  100008., 102816., 139195., 143890., 149050., 153760.,
      140935., 145690., 150910., 155680., 73503.,  76374.,  79488.,  82368.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      54825.,  55650.,  57750.,  58600.,  59725.,  60650.,  62850.,  63800.,
      89125.,  90650.,  93450.,  95000.,  94025.,  95650.,  98550.,  100200.,
      192025., 195650., 200550., 204200., 196925., 200650., 205650., 209400.,
      226325., 230650., 236250., 240600., 231225., 235650., 241350., 245800.,
      329225., 335650., 343350., 349800., 334125., 340650., 348450., 355000.,
      363525., 370650., 379050., 386200., 368425., 375650., 384150., 391400.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      44528.,  44816.,  45104.,  45392.,  47228.,  47528.,  47828.,  48128.,
      75480.,  76000.,  76520.,  77040.,  79980.,  80520.,  81060.,  81600.,
      84840.,  85440.,  86040.,  86640.,  89660.,  90280.,  90900.,  91520.,
      50384.,  50768.,  51152.,  51536.,  53276.,  53672.,  54068.,  54464.,
      87835.,  88510.,  89185.,  89860.,  92170.,  92860.,  93550.,  94240.,
      142775., 143950., 145125., 146300., 150000., 151200., 152400., 153600.,
      152475., 153750., 155025., 156300., 160100., 161400., 162700., 164000.,
      87715.,  88510.,  89305.,  90100.,  92290.,  93100.,  93910.,  94720.,
      131935., 133030., 134125., 135220., 137950., 139060., 140170., 141280.,
      210675., 212550., 214425., 216300., 220700., 222600., 224500., 226400.,
      220375., 222350., 224325., 226300., 230800., 232800., 234800., 236800.,
      125095., 126310., 127525., 128740., 131350., 132580., 133810., 135040.,
      54351.,  55134.,  55917.,  56700.,  58104.,  58896.,  59688.,  60480.,
      82175.,  83510.,  84845.,  86180.,  88430.,  89780.,  91130.,  92480.,
      85595.,  86990.,  88385.,  89780.,  92090.,  93500.,  94910.,  96320.,
      45351.,  46206.,  47061.,  47916.,  49248.,  50112.,  50976.,  51840.,
      212528., 214160., 215792., 217424., 220604., 222248., 223892., 225536.,
      337560., 340320., 343080., 345840., 351020., 353800., 356580., 359360.,
      346920., 349760., 352600., 355440., 360700., 363560., 366420., 369280.,
      196880., 198608., 200336., 202064., 205148., 206888., 208628., 210368.,
      264235., 266590., 268945., 271300., 275290., 277660., 280030., 282400.,
      414375., 418350., 422325., 426300., 432800., 436800., 440800., 444800.,
      424075., 428150., 432225., 436300., 442900., 447000., 451100., 455200.,
      237235., 239710., 242185., 244660., 248530., 251020., 253510., 256000.,
      308335., 311110., 313885., 316660., 321070., 323860., 326650., 329440.,
      482275., 486950., 491625., 496300., 503500., 508200., 512900., 517600.,
      491975., 496750., 501525., 506300., 513600., 518400., 523200., 528000.,
      274615., 277510., 280405., 283300., 287590., 290500., 293410., 296320.,
      119871., 121662., 123453., 125244., 127656., 129456., 131256., 133056.,
      177935., 180950., 183965., 186980., 190910., 193940., 196970., 200000.,
      181355., 184430., 187505., 190580., 194570., 197660., 200750., 203840.,
      94743.,  96606.,  98469.,  100332., 102672., 104544., 106416., 108288.,
      380528., 383504., 386480., 389456., 393980., 396968., 399956., 402944.,
      599640., 604640., 609640., 614640., 622060., 627080., 632100., 637120.,
      609000., 614080., 619160., 624240., 631740., 636840., 641940., 647040.,
      343376., 346448., 349520., 352592., 357020., 360104., 363188., 366272.,
      440635., 444670., 448705., 452740., 458410., 462460., 466510., 470560.,
      685975., 692750., 699525., 706300., 715600., 722400., 729200., 736000.,
      695675., 702550., 709425., 716300., 725700., 732600., 739500., 746400.,
      386755., 390910., 395065., 399220., 404770., 408940., 413110., 417280.,
      484735., 489190., 493645., 498100., 504190., 508660., 513130., 517600.,
      753875., 761350., 768825., 776300., 786300., 793800., 801300., 808800.,
      763575., 771150., 778725., 786300., 796400., 804000., 811600., 819200.,
      424135., 428710., 433285., 437860., 443830., 448420., 453010., 457600.,
      185391., 188190., 190989., 193788., 197208., 200016., 202824., 205632.,
      273695., 278390., 283085., 287780., 293390., 298100., 302810., 307520.,
      277115., 281870., 286625., 291380., 297050., 301820., 306590., 311360.,
      144135., 147006., 149877., 152748., 156096., 158976., 161856., 164736.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108825., 109650., 110475., 111300., 114650., 115500., 116350., 117200.,
      118525., 119450., 120375., 121300., 124750., 125700., 126650., 127600.,
      176725., 178250., 179775., 181300., 185350., 186900., 188450., 190000.,
      186425., 188050., 189675., 191300., 195450., 197100., 198750., 200400.,
      380425., 384050., 387675., 391300., 397450., 401100., 404750., 408400.,
      390125., 393850., 397575., 401300., 407550., 411300., 415050., 418800.,
      448325., 452650., 456975., 461300., 468150., 472500., 476850., 481200.,
      458025., 462450., 466875., 471300., 478250., 482700., 487150., 491600.,
      652025., 658450., 664875., 671300., 680250., 686700., 693150., 699600.,
      661725., 668250., 674775., 681300., 690350., 696900., 703450., 710000.,
      719925., 727050., 734175., 741300., 750950., 758100., 765250., 772400.,
      729625., 736850., 744075., 751300., 761050., 768300., 775550., 782800.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      44060.,  45392.,  46748.,  48128.,  74820.,  77040.,  79300.,  81600.,
      84260.,  86640.,  89060.,  91520.,  50108.,  51536.,  52988.,  54464.,
      87715.,  89860.,  92035.,  94240.,  142725., 146300., 149925., 153600.,
      152525., 156300., 160125., 164000., 87835.,  90100.,  92395.,  94720.,
      132235., 135220., 138235., 141280., 211325., 216300., 221325., 226400.,
      221125., 226300., 231525., 236800., 125635., 128740., 131875., 135040.,
      54837.,  56700.,  58581.,  60480.,  83075.,  86180.,  89315.,  92480.,
      86555.,  89780.,  93035.,  96320.,  45981.,  47916.,  49869.,  51840.,
      213404., 217424., 221468., 225536., 339140., 345840., 352580., 359360.,
      348580., 355440., 362340., 369280., 197948., 202064., 206204., 210368.,
      265795., 271300., 276835., 282400., 417125., 426300., 435525., 444800.,
      426925., 436300., 445725., 455200., 239035., 244660., 250315., 256000.,
      310315., 316660., 323035., 329440., 485725., 496300., 506925., 517600.,
      495525., 506300., 517125., 528000., 276835., 283300., 289795., 296320.,
      121365., 125244., 129141., 133056., 180515., 186980., 193475., 200000.,
      183995., 190580., 197195., 203840., 96381.,  100332., 104301., 108288.,
      382748., 389456., 396188., 402944., 603460., 614640., 625860., 637120.,
      612900., 624240., 635620., 647040., 345788., 352592., 359420., 366272.,
      443875., 452740., 461635., 470560., 691525., 706300., 721125., 736000.,
      701325., 716300., 731325., 746400., 390235., 399220., 408235., 417280.,
      488395., 498100., 507835., 517600., 760125., 776300., 792525., 808800.,
      769925., 786300., 802725., 819200., 428035., 437860., 447715., 457600.,
      187893., 193788., 199701., 205632., 277955., 287780., 297635., 307520.,
      281435., 291380., 301355., 311360., 146781., 152748., 158733., 164736.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108425., 111300., 114225., 117200., 118225., 121300., 124425., 127600.,
      177025., 181300., 185625., 190000., 186825., 191300., 195825., 200400.,
      382825., 391300., 399825., 408400., 392625., 401300., 410025., 418800.,
      451425., 461300., 471225., 481200., 461225., 471300., 481425., 491600.,
      657225., 671300., 685425., 699600., 667025., 681300., 695625., 710000.,
      725825., 741300., 756825., 772400., 735625., 751300., 767025., 782800.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      87556.,   88120.,   90208.,   90784.,   92908.,   93496.,   95656.,
      96256.,   148620.,  149640.,  153040.,  154080.,  157540.,  158600.,
      162120.,  163200.,  167340.,  168520.,  172080.,  173280.,  176900.,
      178120.,  181800.,  183040.,  99460.,   100216.,  102304.,  103072.,
      105196.,  105976.,  108136.,  108928.,  174095.,  175430.,  178370.,
      179720.,  182705.,  184070.,  187100.,  188480.,  283125.,  285450.,
      290250.,  292600.,  297475.,  299850.,  304800.,  307200.,  302525.,
      305050.,  310050.,  312600.,  317675.,  320250.,  325400.,  328000.,
      174095.,  175670.,  178610.,  180200.,  183185.,  184790.,  187820.,
      189440.,  262295.,  264470.,  268250.,  270440.,  274265.,  276470.,
      280340.,  282560.,  418925.,  422650.,  428850.,  432600.,  438875.,
      442650.,  449000.,  452800.,  438325.,  442250.,  448650.,  452600.,
      459075.,  463050.,  469600.,  473600.,  248855.,  251270.,  255050.,
      257480.,  261305.,  263750.,  267620.,  270080.,  108117.,  109674.,
      111834.,  113400.,  115587.,  117162.,  119376.,  120960.,  163495.,
      166150.,  169690.,  172360.,  175945.,  178630.,  182260.,  184960.,
      170335.,  173110.,  176770.,  179560.,  183265.,  186070.,  189820.,
      192640.,  90261.,   91962.,   94122.,   95832.,   98019.,   99738.,
      101952.,  103680.,  423556.,  426808.,  431584.,  434848.,  439660.,
      442936.,  447784.,  451072.,  672780.,  678280.,  686160.,  691680.,
      699620.,  705160.,  713160.,  718720.,  691500.,  697160.,  705200.,
      710880.,  718980.,  724680.,  732840.,  738560.,  392452.,  395896.,
      400672.,  404128.,  408940.,  412408.,  417256.,  420736.,  526895.,
      531590.,  537890.,  542600.,  548945.,  553670.,  560060.,  564800.,
      826325.,  834250.,  844650.,  852600.,  863075.,  871050.,  881600.,
      889600.,  845725.,  853850.,  864450.,  872600.,  883275.,  891450.,
      902200.,  910400.,  473135.,  478070.,  484370.,  489320.,  495665.,
      500630.,  507020.,  512000.,  615095.,  620630.,  627770.,  633320.,
      640505.,  646070.,  653300.,  658880.,  962125.,  971450.,  983250.,
      992600.,  1004475., 1013850., 1025800., 1035200., 981525.,  991050.,
      1003050., 1012600., 1024675., 1034250., 1046400., 1056000., 547895.,
      553670.,  560810.,  566600.,  573785.,  579590.,  586820.,  592640.,
      239157.,  242730.,  246906.,  250488.,  254691.,  258282.,  262512.,
      266112.,  355015.,  361030.,  367930.,  373960.,  380905.,  386950.,
      393940.,  400000.,  361855.,  367990.,  375010.,  381160.,  388225.,
      394390.,  401500.,  407680.,  189045.,  192762.,  196938.,  200664.,
      204867.,  208602.,  212832.,  216576.,  759556.,  765496.,  772960.,
      778912.,  786412.,  792376.,  799912.,  805888.,  1196940., 1206920.,
      1219280., 1229280., 1241700., 1251720., 1264200., 1274240., 1215660.,
      1225800., 1238320., 1248480., 1261060., 1271240., 1283880., 1294080.,
      685444.,  691576.,  699040.,  705184.,  712684.,  718840.,  726376.,
      732544.,  879695.,  887750.,  897410.,  905480.,  915185.,  923270.,
      933020.,  941120.,  1369525., 1383050., 1399050., 1412600., 1428675.,
      1442250., 1458400., 1472000., 1388925., 1402650., 1418850., 1432600.,
      1448875., 1462650., 1479000., 1492800., 772175.,  780470.,  790130.,
      798440.,  808145.,  816470.,  826220.,  834560.,  967895.,  976790.,
      987290.,  996200.,  1006745., 1015670., 1026260., 1035200., 1505325.,
      1520250., 1537650., 1552600., 1570075., 1585050., 1602600., 1617600.,
      1524725., 1539850., 1557450., 1572600., 1590275., 1605450., 1623200.,
      1638400., 846935.,  856070.,  866570.,  875720.,  886265.,  895430.,
      906020.,  915200.,  370197.,  375786.,  381978.,  387576.,  393795.,
      399402.,  405648.,  411264.,  546535.,  555910.,  566170.,  575560.,
      585865.,  595270.,  605620.,  615040.,  553375.,  562870.,  573250.,
      582760.,  593185.,  602710.,  613180.,  622720.,  287829.,  293562.,
      299754.,  305496.,  311715.,  317466.,  323712.,  329472.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      215225.,  216850.,  220950.,  222600.,  226775.,  228450.,  232700.,
      234400.,  234625.,  236450.,  240750.,  242600.,  246975.,  248850.,
      253300.,  255200.,  351025.,  354050.,  359550.,  362600.,  368175.,
      371250.,  376900.,  380000.,  370425.,  373650.,  379350.,  382600.,
      388375.,  391650.,  397500.,  400800.,  758425.,  765650.,  775350.,
      782600.,  792375.,  799650.,  809500.,  816800.,  777825.,  785250.,
      795150.,  802600.,  812575.,  820050.,  830100.,  837600.,  894225.,
      902850.,  913950.,  922600.,  933775.,  942450.,  953700.,  962400.,
      913625.,  922450.,  933750.,  942600.,  953975.,  962850.,  974300.,
      983200.,  1301625., 1314450., 1329750., 1342600., 1357975., 1370850.,
      1386300., 1399200., 1321025., 1334050., 1349550., 1362600., 1378175.,
      1391250., 1406900., 1420000., 1437425., 1451650., 1468350., 1482600.,
      1499375., 1513650., 1530500., 1544800., 1456825., 1471250., 1488150.,
      1502600., 1519575., 1534050., 1551100., 1565600.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      174548.,  175112.,  175676.,  176240.,  179840.,  180416.,  180992.,
      181568.,  185228.,  185816.,  186404.,  186992.,  190712.,  191312.,
      191912.,  192512.,  296220.,  297240.,  298260.,  299280.,  305040.,
      306080.,  307120.,  308160.,  314020.,  315080.,  316140.,  317200.,
      323160.,  324240.,  325320.,  326400.,  333500.,  334680.,  335860.,
      337040.,  342960.,  344160.,  345360.,  346560.,  352580.,  353800.,
      355020.,  356240.,  362360.,  363600.,  364840.,  366080.,  198164.,
      198920.,  199676.,  200432.,  203840.,  204608.,  205376.,  206144.,
      209612.,  210392.,  211172.,  211952.,  215480.,  216272.,  217064.,
      217856.,  346855.,  348190.,  349525.,  350860.,  355390.,  356740.,
      358090.,  359440.,  364045.,  365410.,  366775.,  368140.,  372820.,
      374200.,  375580.,  376960.,  563925.,  566250.,  568575.,  570900.,
      578150.,  580500.,  582850.,  585200.,  592575.,  594950.,  597325.,
      599700.,  607200.,  609600.,  612000.,  614400.,  602525.,  605050.,
      607575.,  610100.,  617550.,  620100.,  622650.,  625200.,  632775.,
      635350.,  637925.,  640500.,  648200.,  650800.,  653400.,  656000.,
      346615.,  348190.,  349765.,  351340.,  355630.,  357220.,  358810.,
      360400.,  364765.,  366370.,  367975.,  369580.,  374020.,  375640.,
      377260.,  378880.,  522415.,  524590.,  526765.,  528940.,  534310.,
      536500.,  538690.,  540880.,  546325.,  548530.,  550735.,  552940.,
      558460.,  560680.,  562900.,  565120.,  834125.,  837850.,  841575.,
      845300.,  853950.,  857700.,  861450.,  865200.,  873975.,  877750.,
      881525.,  885300.,  894200.,  898000.,  901800.,  905600.,  872725.,
      876650.,  880575.,  884500.,  893350.,  897300.,  901250.,  905200.,
      914175.,  918150.,  922125.,  926100.,  935200.,  939200.,  943200.,
      947200.,  495295.,  497710.,  500125.,  502540.,  507670.,  510100.,
      512530.,  514960.,  520165.,  522610.,  525055.,  527500.,  532780.,
      535240.,  537700.,  540160.,  214677.,  216234.,  217791.,  219348.,
      222102.,  223668.,  225234.,  226800.,  229599.,  231174.,  232749.,
      234324.,  237168.,  238752.,  240336.,  241920.,  324335.,  326990.,
      329645.,  332300.,  336710.,  339380.,  342050.,  344720.,  349205.,
      351890.,  354575.,  357260.,  361820.,  364520.,  367220.,  369920.,
      337895.,  340670.,  343445.,  346220.,  350750.,  353540.,  356330.,
      359120.,  363725.,  366530.,  369335.,  372140.,  376820.,  379640.,
      382460.,  385280.,  178821.,  180522.,  182223.,  183924.,  186534.,
      188244.,  189954.,  191664.,  194319.,  196038.,  197757.,  199476.,
      202176.,  203904.,  205632.,  207360.,  843860.,  847112.,  850364.,
      853616.,  859904.,  863168.,  866432.,  869696.,  876044.,  879320.,
      882596.,  885872.,  892280.,  895568.,  898856.,  902144.,  1340060.,
      1345560., 1351060., 1356560., 1366800., 1372320., 1377840., 1383360.,
      1393700., 1399240., 1404780., 1410320., 1420760., 1426320., 1431880.,
      1437440., 1377340., 1383000., 1388660., 1394320., 1404720., 1410400.,
      1416080., 1421760., 1432260., 1437960., 1443660., 1449360., 1459960.,
      1465680., 1471400., 1477120., 781460.,  784904.,  788348.,  791792.,
      797888.,  801344.,  804800.,  808256.,  814412.,  817880.,  821348.,
      824816.,  831032.,  834512.,  837992.,  841472.,  1049095., 1053790.,
      1058485., 1063180., 1071070., 1075780., 1080490., 1085200., 1093165.,
      1097890., 1102615., 1107340., 1115380., 1120120., 1124860., 1129600.,
      1644725., 1652650., 1660575., 1668500., 1681350., 1689300., 1697250.,
      1705200., 1718175., 1726150., 1734125., 1742100., 1755200., 1763200.,
      1771200., 1779200., 1683325., 1691450., 1699575., 1707700., 1720750.,
      1728900., 1737050., 1745200., 1758375., 1766550., 1774725., 1782900.,
      1796200., 1804400., 1812600., 1820800., 941335.,  946270.,  951205.,
      956140.,  963790.,  968740.,  973690.,  978640.,  986365.,  991330.,
      996295.,  1001260., 1009060., 1014040., 1019020., 1024000., 1224655.,
      1230190., 1235725., 1241260., 1249990., 1255540., 1261090., 1266640.,
      1275445., 1281010., 1286575., 1292140., 1301020., 1306600., 1312180.,
      1317760., 1914925., 1924250., 1933575., 1942900., 1957150., 1966500.,
      1975850., 1985200., 1999575., 2008950., 2018325., 2027700., 2042200.,
      2051600., 2061000., 2070400., 1953525., 1963050., 1972575., 1982100.,
      1996550., 2006100., 2015650., 2025200., 2039775., 2049350., 2058925.,
      2068500., 2083200., 2092800., 2102400., 2112000., 1090015., 1095790.,
      1101565., 1107340., 1115830., 1121620., 1127410., 1133200., 1141765.,
      1147570., 1153375., 1159180., 1167820., 1173640., 1179460., 1185280.,
      474741.,  478314.,  481887.,  485460.,  490230.,  493812.,  497394.,
      500976.,  505791.,  509382.,  512973.,  516564.,  521424.,  525024.,
      528624.,  532224.,  704015.,  710030.,  716045.,  722060.,  729830.,
      735860.,  741890.,  747920.,  755765.,  761810.,  767855.,  773900.,
      781820.,  787880.,  793940.,  800000.,  717575.,  723710.,  729845.,
      735980.,  743870.,  750020.,  756170.,  762320.,  770285.,  776450.,
      782615.,  788780.,  796820.,  803000.,  809180.,  815360.,  374373.,
      378090.,  381807.,  385524.,  390150.,  393876.,  397602.,  401328.,
      405999.,  409734.,  413469.,  417204.,  421920.,  425664.,  429408.,
      433152.,  1513172., 1519112., 1525052., 1530992., 1539968., 1545920.,
      1551872., 1557824., 1566860., 1572824., 1578788., 1584752., 1593848.,
      1599824., 1605800., 1611776., 2383900., 2393880., 2403860., 2413840.,
      2428560., 2438560., 2448560., 2458560., 2473380., 2483400., 2493420.,
      2503440., 2518360., 2528400., 2538440., 2548480., 2421180., 2431320.,
      2441460., 2451600., 2466480., 2476640., 2486800., 2496960., 2511940.,
      2522120., 2532300., 2542480., 2557560., 2567760., 2577960., 2588160.,
      1364756., 1370888., 1377020., 1383152., 1391936., 1398080., 1404224.,
      1410368., 1419212., 1425368., 1431524., 1437680., 1446584., 1452752.,
      1458920., 1465088., 1751335., 1759390., 1767445., 1775500., 1786750.,
      1794820., 1802890., 1810960., 1822285., 1830370., 1838455., 1846540.,
      1857940., 1866040., 1874140., 1882240., 2725525., 2739050., 2752575.,
      2766100., 2784550., 2798100., 2811650., 2825200., 2843775., 2857350.,
      2870925., 2884500., 2903200., 2916800., 2930400., 2944000., 2764125.,
      2777850., 2791575., 2805300., 2823950., 2837700., 2851450., 2865200.,
      2883975., 2897750., 2911525., 2925300., 2944200., 2958000., 2971800.,
      2985600., 1536055., 1544350., 1552645., 1560940., 1571950., 1580260.,
      1588570., 1596880., 1607965., 1616290., 1624615., 1632940., 1644100.,
      1652440., 1660780., 1669120., 1926895., 1935790., 1944685., 1953580.,
      1965670., 1974580., 1983490., 1992400., 2004565., 2013490., 2022415.,
      2031340., 2043580., 2052520., 2061460., 2070400., 2995725., 3010650.,
      3025575., 3040500., 3060350., 3075300., 3090250., 3105200., 3125175.,
      3140150., 3155125., 3170100., 3190200., 3205200., 3220200., 3235200.,
      3034325., 3049450., 3064575., 3079700., 3099750., 3114900., 3130050.,
      3145200., 3165375., 3180550., 3195725., 3210900., 3231200., 3246400.,
      3261600., 3276800., 1684735., 1693870., 1703005., 1712140., 1723990.,
      1733140., 1742290., 1751440., 1763365., 1772530., 1781695., 1790860.,
      1802860., 1812040., 1821220., 1830400., 734805.,  740394.,  745983.,
      751572.,  758358.,  763956.,  769554.,  775152.,  781983.,  787590.,
      793197.,  798804.,  805680.,  811296.,  816912.,  822528.,  1083695.,
      1093070., 1102445., 1111820., 1122950., 1132340., 1141730., 1151120.,
      1162325., 1171730., 1181135., 1190540., 1201820., 1211240., 1220660.,
      1230080., 1097255., 1106750., 1116245., 1125740., 1136990., 1146500.,
      1156010., 1165520., 1176845., 1186370., 1195895., 1205420., 1216820.,
      1226360., 1235900., 1245440., 569925.,  575658.,  581391.,  587124.,
      593766.,  599508.,  605250.,  610992.,  617679.,  623430.,  629181.,
      634932.,  641664.,  647424.,  653184.,  658944.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      428825.,  430450.,  432075.,  433700.,  440250.,  441900.,  443550.,
      445200.,  451875.,  453550.,  455225.,  456900.,  463700.,  465400.,
      467100.,  468800.,  467425.,  469250.,  471075.,  472900.,  479650.,
      481500.,  483350.,  485200.,  492075.,  493950.,  495825.,  497700.,
      504700.,  506600.,  508500.,  510400.,  699025.,  702050.,  705075.,
      708100.,  716050.,  719100.,  722150.,  725200.,  733275.,  736350.,
      739425.,  742500.,  750700.,  753800.,  756900.,  760000.,  737625.,
      740850.,  744075.,  747300.,  755450.,  758700.,  761950.,  765200.,
      773475.,  776750.,  780025.,  783300.,  791700.,  795000.,  798300.,
      801600.,  1509625., 1516850., 1524075., 1531300., 1543450., 1550700.,
      1557950., 1565200., 1577475., 1584750., 1592025., 1599300., 1611700.,
      1619000., 1626300., 1633600., 1548225., 1555650., 1563075., 1570500.,
      1582850., 1590300., 1597750., 1605200., 1617675., 1625150., 1632625.,
      1640100., 1652700., 1660200., 1667700., 1675200., 1779825., 1788450.,
      1797075., 1805700., 1819250., 1827900., 1836550., 1845200., 1858875.,
      1867550., 1876225., 1884900., 1898700., 1907400., 1916100., 1924800.,
      1818425., 1827250., 1836075., 1844900., 1858650., 1867500., 1876350.,
      1885200., 1899075., 1907950., 1916825., 1925700., 1939700., 1948600.,
      1957500., 1966400., 2590425., 2603250., 2616075., 2628900., 2646650.,
      2659500., 2672350., 2685200., 2703075., 2715950., 2728825., 2741700.,
      2759700., 2772600., 2785500., 2798400., 2629025., 2642050., 2655075.,
      2668100., 2686050., 2699100., 2712150., 2725200., 2743275., 2756350.,
      2769425., 2782500., 2800700., 2813800., 2826900., 2840000., 2860625.,
      2874850., 2889075., 2903300., 2922450., 2936700., 2950950., 2965200.,
      2984475., 2998750., 3013025., 3027300., 3046700., 3061000., 3075300.,
      3089600., 2899225., 2913650., 2928075., 2942500., 2961850., 2976300.,
      2990750., 3005200., 3024675., 3039150., 3053625., 3068100., 3087700.,
      3102200., 3116700., 3131200.};
  const std::array<int, 4> in_shape = {{3, 8, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4532.,  6000.,  6620.,  3914.,  8780.,  11150., 11800., 6790.,
      13100., 16350., 17000., 9670.,  5486.,  6670.,  6910.,  3711.,
      20916., 25840., 26460., 15050., 26060., 31950., 32600., 18310.,
      30380., 37150., 37800., 21190., 12014., 14350., 14590., 7743.,
      37300., 45680., 46300., 26186., 43340., 52750., 53400., 29830.,
      47660., 57950., 58600., 32710., 18542., 22030., 22270., 11775.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {8225.,  8875.,  13425., 14075.,
                                         29025., 29675., 34225., 34875.,
                                         49825., 50475., 55025., 55675.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8832.,  9064.,  11680.,  12000.,  12880.,  13240.,  7600.,  7828.,
      17030., 17560., 21600.,  22300.,  22850.,  23600.,  13115., 13580.,
      25350., 26200., 31600.,  32700.,  32850.,  34000.,  18635., 19340.,
      10366., 10972., 12560.,  13340.,  13010.,  13820.,  6927.,  7422.,
      40576., 41832., 50080.,  51680.,  51280.,  52920.,  29104., 30100.,
      50310., 52120., 61600.,  63900.,  62850.,  65200.,  35195., 36620.,
      58630., 60760., 71600.,  74300.,  72850.,  75600.,  40715., 42380.,
      22654., 24028., 26960.,  28700.,  27410.,  29180.,  14415., 15486.,
      72320., 74600., 88480.,  91360.,  89680.,  92600.,  50608., 52372.,
      83590., 86680., 101600., 105500., 102850., 106800., 57275., 59660.,
      91910., 95320., 111600., 115900., 112850., 117200., 62795., 65420.,
      34942., 37084., 41360.,  44060.,  41810.,  44540.,  21903., 23550.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15975., 16450., 17225., 17750.,  25975.,  26850.,  27225.,  28150.,
      55975., 58050., 57225., 59350.,  65975.,  68450.,  67225.,  69750.,
      95975., 99650., 97225., 100950., 105975., 110050., 107225., 111350.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17432.,  17664.,  17896.,  18128.,  23040.,  23360.,  23680.,  24000.,
      25400.,  25760.,  26120.,  26480.,  14972.,  15200.,  15428.,  15656.,
      33530.,  34060.,  34590.,  35120.,  42500.,  43200.,  43900.,  44600.,
      44950.,  45700.,  46450.,  47200.,  25765.,  26230.,  26695.,  27160.,
      49850.,  50700.,  51550.,  52400.,  62100.,  63200.,  64300.,  65400.,
      64550.,  65700.,  66850.,  68000.,  36565.,  37270.,  37975.,  38680.,
      20126.,  20732.,  21338.,  21944.,  24340.,  25120.,  25900.,  26680.,
      25210.,  26020.,  26830.,  27640.,  13359.,  13854.,  14349.,  14844.,
      79896.,  81152.,  82408.,  83664.,  98560.,  100160., 101760., 103360.,
      100920., 102560., 104200., 105840., 57212.,  58208.,  59204.,  60200.,
      98810.,  100620., 102430., 104240., 120900., 123200., 125500., 127800.,
      123350., 125700., 128050., 130400., 68965.,  70390.,  71815.,  73240.,
      115130., 117260., 119390., 121520., 140500., 143200., 145900., 148600.,
      142950., 145700., 148450., 151200., 79765.,  81430.,  83095.,  84760.,
      43934.,  45308.,  46682.,  48056.,  52180.,  53920.,  55660.,  57400.,
      53050.,  54820.,  56590.,  58360.,  27759.,  28830.,  29901.,  30972.,
      142360., 144640., 146920., 149200., 174080., 176960., 179840., 182720.,
      176440., 179360., 182280., 185200., 99452.,  101216., 102980., 104744.,
      164090., 167180., 170270., 173360., 199300., 203200., 207100., 211000.,
      201750., 205700., 209650., 213600., 112165., 114550., 116935., 119320.,
      180410., 183820., 187230., 190640., 218900., 223200., 227500., 231800.,
      221350., 225700., 230050., 234400., 122965., 125590., 128215., 130840.,
      67742.,  69884.,  72026.,  74168.,  80020.,  82720.,  85420.,  88120.,
      80890.,  83620.,  86350.,  89080.,  42159.,  43806.,  45453.,  47100.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31475.,  31950.,  32425.,  32900.,  33925.,  34450.,  34975.,  35500.,
      51075.,  51950.,  52825.,  53700.,  53525.,  54450.,  55375.,  56300.,
      109875., 111950., 114025., 116100., 112325., 114450., 116575., 118700.,
      129475., 131950., 134425., 136900., 131925., 134450., 136975., 139500.,
      188275., 191950., 195625., 199300., 190725., 194450., 198175., 201900.,
      207875., 211950., 216025., 220100., 210325., 214450., 218575., 222700.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17168.,  18128.,  22760.,  24000.,  25160.,  26480.,  14864.,  15656.,
      33540.,  35120.,  42575.,  44600.,  45075.,  47200.,  25885.,  27160.,
      50180.,  52400.,  62575.,  65400.,  65075.,  68000.,  36925.,  38680.,
      20540.,  21944.,  24895.,  26680.,  25795.,  27640.,  13737.,  14844.,
      80656.,  83664.,  99560.,  103360., 101960., 105840., 57872.,  60200.,
      100100., 104240., 122575., 127800., 125075., 130400., 70045.,  73240.,
      116740., 121520., 142575., 148600., 145075., 151200., 81085.,  84760.,
      45116.,  48056.,  53695.,  57400.,  54595.,  58360.,  28713.,  30972.,
      144144., 149200., 176360., 182720., 178760., 185200., 100880., 104744.,
      166660., 173360., 202575., 211000., 205075., 213600., 114205., 119320.,
      183300., 190640., 222575., 231800., 225075., 234400., 125245., 130840.,
      69692.,  74168.,  82495.,  88120.,  83395.,  89080.,  43689.,  47100.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31325.,  32900.,  33825.,  35500.,  51325.,  53700.,  53825.,  56300.,
      111325., 116100., 113825., 118700., 131325., 136900., 133825., 139500.,
      191325., 199300., 193825., 201900., 211325., 220100., 213825., 222700.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33888.,  34336.,  35792.,  36256.,  44900.,  45520.,  47360.,  48000.,
      49620.,  50320.,  52240.,  52960.,  29284.,  29728.,  30856.,  31312.,
      66040.,  67080.,  69180.,  70240.,  83775.,  85150.,  87800.,  89200.,
      88675.,  90150.,  92900.,  94400.,  50855.,  51770.,  53390.,  54320.,
      98680.,  100360., 103100., 104800., 122975., 125150., 128600., 130800.,
      127875., 130150., 133700., 136000., 72455.,  73850.,  75950.,  77360.,
      39880.,  41080.,  42676.,  43888.,  48245.,  49790.,  51800.,  53360.,
      49985.,  51590.,  53660.,  55280.,  26493.,  27474.,  28698.,  29688.,
      158816., 161312., 164816., 167328., 195940., 199120., 203520., 206720.,
      200660., 203920., 208400., 211680., 113764., 115744., 118408., 120400.,
      196600., 200200., 204860., 208480., 240575., 245150., 251000., 255600.,
      245475., 250150., 256100., 260800., 137255., 140090., 143630., 146480.,
      229240., 233480., 238780., 243040., 279775., 285150., 291800., 297200.,
      284675., 290150., 296900., 302400., 158855., 162170., 166190., 169520.,
      87496.,  90232.,  93364.,  96112.,  103925., 107390., 111320., 114800.,
      105665., 109190., 113180., 116720., 55293.,  57426.,  59802.,  61944.,
      283744., 288288., 293840., 298400., 346980., 352720., 359680., 365440.,
      351700., 357520., 364560., 370400., 198244., 201760., 205960., 209488.,
      327160., 333320., 340540., 346720., 397375., 405150., 414200., 422000.,
      402275., 410150., 419300., 427200., 223655., 228410., 233870., 238640.,
      359800., 366600., 374460., 381280., 436575., 445150., 455000., 463600.,
      441475., 450150., 460100., 468800., 245255., 250490., 256430., 261680.,
      135112., 139384., 144052., 148336., 159605., 164990., 170840., 176240.,
      161345., 166790., 172700., 178160., 84093.,  87378.,  90906.,  94200.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      61725.,  62650.,  64850.,  65800.,  66625.,  67650.,  69950.,  71000.,
      100925., 102650., 105650., 107400., 105825., 107650., 110750., 112600.,
      218525., 222650., 228050., 232200., 223425., 227650., 233150., 237400.,
      257725., 262650., 268850., 273800., 262625., 267650., 273950., 279000.,
      375325., 382650., 391250., 398600., 380225., 387650., 396350., 403800.,
      414525., 422650., 432050., 440200., 419425., 427650., 437150., 445400.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      67328.,  67776.,  68224.,  68672.,  71120.,  71584.,  72048.,  72512.,
      89180.,  89800.,  90420.,  91040.,  94080.,  94720.,  95360.,  96000.,
      98540.,  99240.,  99940.,  100640., 103760., 104480., 105200., 105920.,
      58124.,  58568.,  59012.,  59456.,  61256.,  61712.,  62168.,  62624.,
      131040., 132080., 133120., 134160., 137300., 138360., 139420., 140480.,
      166175., 167550., 168925., 170300., 174200., 175600., 177000., 178400.,
      175875., 177350., 178825., 180300., 184300., 185800., 187300., 188800.,
      100795., 101710., 102625., 103540., 105850., 106780., 107710., 108640.,
      195680., 197360., 199040., 200720., 204500., 206200., 207900., 209600.,
      243775., 245950., 248125., 250300., 255000., 257200., 259400., 261600.,
      253475., 255750., 258025., 260300., 265100., 267400., 269700., 272000.,
      143515., 144910., 146305., 147700., 150490., 151900., 153310., 154720.,
      78560.,  79760.,  80960.,  82160.,  84140.,  85352.,  86564.,  87776.,
      94945.,  96490.,  98035.,  99580.,  102040., 103600., 105160., 106720.,
      98365.,  99970.,  101575., 103180., 105700., 107320., 108940., 110560.,
      52005.,  52986.,  53967.,  54948.,  56406.,  57396.,  58386.,  59376.,
      315136., 317632., 320128., 322624., 327120., 329632., 332144., 334656.,
      388700., 391880., 395060., 398240., 403840., 407040., 410240., 413440.,
      398060., 401320., 404580., 407840., 413520., 416800., 420080., 423360.,
      225548., 227528., 229508., 231488., 234824., 236816., 238808., 240800.,
      389600., 393200., 396800., 400400., 406100., 409720., 413340., 416960.,
      476575., 481150., 485725., 490300., 497400., 502000., 506600., 511200.,
      486275., 490950., 495625., 500300., 507500., 512200., 516900., 521600.,
      271675., 274510., 277345., 280180., 284410., 287260., 290110., 292960.,
      454240., 458480., 462720., 466960., 473300., 477560., 481820., 486080.,
      554175., 559550., 564925., 570300., 578200., 583600., 589000., 594400.,
      563875., 569350., 574825., 580300., 588300., 593800., 599300., 604800.,
      314395., 317710., 321025., 324340., 329050., 332380., 335710., 339040.,
      172256., 174992., 177728., 180464., 183980., 186728., 189476., 192224.,
      204385., 207850., 211315., 214780., 219160., 222640., 226120., 229600.,
      207805., 211330., 214855., 218380., 222820., 226360., 229900., 233440.,
      108453., 110586., 112719., 114852., 117462., 119604., 121746., 123888.,
      562944., 567488., 572032., 576576., 583120., 587680., 592240., 596800.,
      688220., 693960., 699700., 705440., 713600., 719360., 725120., 730880.,
      697580., 703400., 709220., 715040., 723280., 729120., 734960., 740800.,
      392972., 396488., 400004., 403520., 408392., 411920., 415448., 418976.,
      648160., 654320., 660480., 666640., 674900., 681080., 687260., 693440.,
      786975., 794750., 802525., 810300., 820600., 828400., 836200., 844000.,
      796675., 804550., 812425., 820300., 830700., 838600., 846500., 854400.,
      442555., 447310., 452065., 456820., 462970., 467740., 472510., 477280.,
      712800., 719600., 726400., 733200., 742100., 748920., 755740., 762560.,
      864575., 873150., 881725., 890300., 901400., 910000., 918600., 927200.,
      874275., 882950., 891625., 900300., 911500., 920200., 928900., 937600.,
      485275., 490510., 495745., 500980., 507610., 512860., 518110., 523360.,
      265952., 270224., 274496., 278768., 283820., 288104., 292388., 296672.,
      313825., 319210., 324595., 329980., 336280., 341680., 347080., 352480.,
      317245., 322690., 328135., 333580., 339940., 345400., 350860., 356320.,
      164901., 168186., 171471., 174756., 178518., 181812., 185106., 188400.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122525., 123450., 124375., 125300., 128750., 129700., 130650., 131600.,
      132225., 133250., 134275., 135300., 138850., 139900., 140950., 142000.,
      200125., 201850., 203575., 205300., 209550., 211300., 213050., 214800.,
      209825., 211650., 213475., 215300., 219650., 221500., 223350., 225200.,
      432925., 437050., 441175., 445300., 451950., 456100., 460250., 464400.,
      442625., 446850., 451075., 455300., 462050., 466300., 470550., 474800.,
      510525., 515450., 520375., 525300., 532750., 537700., 542650., 547600.,
      520225., 525250., 530275., 535300., 542850., 547900., 552950., 558000.,
      743325., 750650., 757975., 765300., 775150., 782500., 789850., 797200.,
      753025., 760450., 767875., 775300., 785250., 792700., 800150., 807600.,
      820925., 829050., 837175., 845300., 855950., 864100., 872250., 880400.,
      830625., 838850., 847075., 855300., 866050., 874300., 882550., 890800.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      66800.,  68672.,  70576.,  72512.,  88620.,  91040.,  93500.,  96000.,
      98060.,  100640., 103260., 105920., 57908.,  59456.,  61028.,  62624.,
      131060., 134160., 137300., 140480., 166325., 170300., 174325., 178400.,
      176125., 180300., 184525., 188800., 101035., 103540., 106075., 108640.,
      196340., 200720., 205140., 209600., 244725., 250300., 255925., 261600.,
      254525., 260300., 266125., 272000., 144235., 147700., 151195., 154720.,
      79388.,  82160.,  84956.,  87776.,  96055.,  99580.,  103135., 106720.,
      99535.,  103180., 106855., 110560., 52761.,  54948.,  57153.,  59376.,
      316656., 322624., 328624., 334656., 390700., 398240., 405820., 413440.,
      400140., 407840., 415580., 423360., 226868., 231488., 236132., 240800.,
      392180., 400400., 408660., 416960., 479925., 490300., 500725., 511200.,
      489725., 500300., 510925., 521600., 273835., 280180., 286555., 292960.,
      457460., 466960., 476500., 486080., 558325., 570300., 582325., 594400.,
      568125., 580300., 592525., 604800., 317035., 324340., 331675., 339040.,
      174620., 180464., 186332., 192224., 207415., 214780., 222175., 229600.,
      210895., 218380., 225895., 233440., 110361., 114852., 119361., 123888.,
      566512., 576576., 586672., 596800., 692780., 705440., 718140., 730880.,
      702220., 715040., 727900., 740800., 395828., 403520., 411236., 418976.,
      653300., 666640., 680020., 693440., 793525., 810300., 827125., 844000.,
      803325., 820300., 837325., 854400., 446635., 456820., 467035., 477280.,
      718580., 733200., 747860., 762560., 871925., 890300., 908725., 927200.,
      881725., 900300., 918925., 937600., 489835., 500980., 512155., 523360.,
      269852., 278768., 287708., 296672., 318775., 329980., 341215., 352480.,
      322255., 333580., 344935., 356320., 167961., 174756., 181569., 188400.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122225., 125300., 128425., 131600., 132025., 135300., 138625., 142000.,
      200625., 205300., 210025., 214800., 210425., 215300., 220225., 225200.,
      435825., 445300., 454825., 464400., 445625., 455300., 465025., 474800.,
      514225., 525300., 536425., 547600., 524025., 535300., 546625., 558000.,
      749425., 765300., 781225., 797200., 759225., 775300., 791425., 807600.,
      827825., 845300., 862825., 880400., 837625., 855300., 873025., 890800.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      132720.,  133600.,  136448.,  137344.,  140240.,  141152.,  144096.,
      145024.,  176020.,  177240.,  180840.,  182080.,  185740.,  187000.,
      190720.,  192000.,  194740.,  196120.,  199880.,  201280.,  205100.,
      206520.,  210400.,  211840.,  114940.,  115816.,  118024.,  118912.,
      121156.,  122056.,  124336.,  125248.,  260060.,  262120.,  266240.,
      268320.,  272500.,  274600.,  278840.,  280960.,  329925.,  332650.,
      337850.,  340600.,  345875.,  348650.,  354000.,  356800.,  349325.,
      352250.,  357650.,  360600.,  366075.,  369050.,  374600.,  377600.,
      200255.,  202070.,  205250.,  207080.,  210305.,  212150.,  215420.,
      217280.,  389340.,  392680.,  398080.,  401440.,  406900.,  410280.,
      415800.,  419200.,  485125.,  489450.,  496250.,  500600.,  507475.,
      511850.,  518800.,  523200.,  504525.,  509050.,  516050.,  520600.,
      527675.,  532250.,  539400.,  544000.,  285695.,  288470.,  292610.,
      295400.,  299585.,  302390.,  306620.,  309440.,  156388.,  158776.,
      161920.,  164320.,  167500.,  169912.,  173128.,  175552.,  189035.,
      192110.,  196070.,  199160.,  203165.,  206270.,  210320.,  213440.,
      195875.,  199070.,  203150.,  206360.,  210485.,  213710.,  217880.,
      221120.,  103569.,  105522.,  107934.,  109896.,  112335.,  114306.,
      116772.,  118752.,  628336.,  633312.,  640256.,  645248.,  652240.,
      657248.,  664288.,  669312.,  775060.,  781400.,  790120.,  796480.,
      805260.,  811640.,  820480.,  826880.,  793780.,  800280.,  809160.,
      815680.,  824620.,  831160.,  840160.,  846720.,  449788.,  453736.,
      459016.,  462976.,  468292.,  472264.,  477616.,  481600.,  777180.,
      784360.,  793600.,  800800.,  810100.,  817320.,  826680.,  833920.,
      950725.,  959850.,  971450.,  980600.,  992275.,  1001450., 1013200.,
      1022400., 970125.,  979450.,  991250.,  1000600., 1012475., 1021850.,
      1033800., 1043200., 542015.,  547670.,  554690.,  560360.,  567425.,
      573110.,  580220.,  585920.,  906460.,  914920.,  925440.,  933920.,
      944500.,  953000.,  963640.,  972160.,  1105925., 1116650., 1129850.,
      1140600., 1153875., 1164650., 1178000., 1188800., 1125325., 1136250.,
      1149650., 1160600., 1174075., 1185050., 1198600., 1209600., 627455.,
      634070.,  642050.,  648680.,  656705.,  663350.,  671420.,  678080.,
      343780.,  349240.,  355456.,  360928.,  367180.,  372664.,  378952.,
      384448.,  407915.,  414830.,  422630.,  429560.,  437405.,  444350.,
      452240.,  459200.,  414755.,  421790.,  429710.,  436760.,  444725.,
      451790.,  459800.,  466880.,  216465.,  220722.,  225438.,  229704.,
      234447.,  238722.,  243492.,  247776.,  1123952., 1133024., 1144064.,
      1153152., 1164240., 1173344., 1184480., 1193600., 1374100., 1385560.,
      1399400., 1410880., 1424780., 1436280., 1450240., 1461760., 1392820.,
      1404440., 1418440., 1430080., 1444140., 1455800., 1469920., 1481600.,
      784636.,  791656.,  800008.,  807040.,  815428.,  822472.,  830896.,
      837952.,  1294300., 1306600., 1320960., 1333280., 1347700., 1360040.,
      1374520., 1386880., 1571525., 1587050., 1605050., 1620600., 1638675.,
      1654250., 1672400., 1688000., 1590925., 1606650., 1624850., 1640600.,
      1658875., 1674650., 1693000., 1708800., 883775.,  893270.,  904130.,
      913640.,  924545.,  934070.,  945020.,  954560.,  1423580., 1437160.,
      1452800., 1466400., 1482100., 1495720., 1511480., 1525120., 1726725.,
      1743850., 1763450., 1780600., 1800275., 1817450., 1837200., 1854400.,
      1746125., 1763450., 1783250., 1800600., 1820475., 1837850., 1857800.,
      1875200., 969215.,  979670.,  991490.,  1001960., 1013825., 1024310.,
      1036220., 1046720., 531172.,  539704.,  548992.,  557536.,  566860.,
      575416.,  584776.,  593344.,  626795.,  637550.,  649190.,  659960.,
      671645.,  682430.,  694160.,  704960.,  633635.,  644510.,  656270.,
      667160.,  678965.,  689870.,  701720.,  712640.,  329361.,  335922.,
      342942.,  349512.,  356559.,  363138.,  370212.,  376800.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      242625.,  244450.,  248750.,  250600.,  254975.,  256850.,  261300.,
      263200.,  262025.,  264050.,  268550.,  270600.,  275175.,  277250.,
      281900.,  284000.,  397825.,  401250.,  407150.,  410600.,  416575.,
      420050.,  426100.,  429600.,  417225.,  420850.,  426950.,  430600.,
      436775.,  440450.,  446700.,  450400.,  863425.,  871650.,  882350.,
      890600.,  901375.,  909650.,  920500.,  928800.,  882825.,  891250.,
      902150.,  910600.,  921575.,  930050.,  941100.,  949600.,  1018625.,
      1028450., 1040750., 1050600., 1062975., 1072850., 1085300., 1095200.,
      1038025., 1048050., 1060550., 1070600., 1083175., 1093250., 1105900.,
      1116000., 1484225., 1498850., 1515950., 1530600., 1547775., 1562450.,
      1579700., 1594400., 1503625., 1518450., 1535750., 1550600., 1567975.,
      1582850., 1600300., 1615200., 1639425., 1655650., 1674350., 1690600.,
      1709375., 1725650., 1744500., 1760800., 1658825., 1675250., 1694150.,
      1710600., 1729575., 1746050., 1765100., 1781600.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      264560.,  265440.,  266320.,  267200.,  272000.,  272896.,  273792.,
      274688.,  279568.,  280480.,  281392.,  282304.,  287264.,  288192.,
      289120.,  290048.,  350820.,  352040.,  353260.,  354480.,  360440.,
      361680.,  362920.,  364160.,  370220.,  371480.,  372740.,  374000.,
      380160.,  381440.,  382720.,  384000.,  388100.,  389480.,  390860.,
      392240.,  398360.,  399760.,  401160.,  402560.,  408780.,  410200.,
      411620.,  413040.,  419360.,  420800.,  422240.,  423680.,  229004.,
      229880.,  230756.,  231632.,  235160.,  236048.,  236936.,  237824.,
      241412.,  242312.,  243212.,  244112.,  247760.,  248672.,  249584.,
      250496.,  518060.,  520120.,  522180.,  524240.,  530400.,  532480.,
      534560.,  536640.,  542900.,  545000.,  547100.,  549200.,  555560.,
      557680.,  559800.,  561920.,  657125.,  659850.,  662575.,  665300.,
      672950.,  675700.,  678450.,  681200.,  688975.,  691750.,  694525.,
      697300.,  705200.,  708000.,  710800.,  713600.,  695725.,  698650.,
      701575.,  704500.,  712350.,  715300.,  718250.,  721200.,  729175.,
      732150.,  735125.,  738100.,  746200.,  749200.,  752200.,  755200.,
      398695.,  400510.,  402325.,  404140.,  408670.,  410500.,  412330.,
      414160.,  418765.,  420610.,  422455.,  424300.,  428980.,  430840.,
      432700.,  434560.,  775340.,  778680.,  782020.,  785360.,  792800.,
      796160.,  799520.,  802880.,  810420.,  813800.,  817180.,  820560.,
      828200.,  831600.,  835000.,  838400.,  965925.,  970250.,  974575.,
      978900.,  988150.,  992500.,  996850.,  1001200., 1010575., 1014950.,
      1019325., 1023700., 1033200., 1037600., 1042000., 1046400., 1004525.,
      1009050., 1013575., 1018100., 1027550., 1032100., 1036650., 1041200.,
      1050775., 1055350., 1059925., 1064500., 1074200., 1078800., 1083400.,
      1088000., 568615.,  571390.,  574165.,  576940.,  582430.,  585220.,
      588010.,  590800.,  596365.,  599170.,  601975.,  604780.,  610420.,
      613240.,  616060.,  618880.,  310388.,  312776.,  315164.,  317552.,
      321440.,  323840.,  326240.,  328640.,  332588.,  335000.,  337412.,
      339824.,  343832.,  346256.,  348680.,  351104.,  374995.,  378070.,
      381145.,  384220.,  389050.,  392140.,  395230.,  398320.,  403225.,
      406330.,  409435.,  412540.,  417520.,  420640.,  423760.,  426880.,
      388555.,  391750.,  394945.,  398140.,  403090.,  406300.,  409510.,
      412720.,  417745.,  420970.,  424195.,  427420.,  432520.,  435760.,
      439000.,  442240.,  205185.,  207138.,  209091.,  211044.,  213906.,
      215868.,  217830.,  219792.,  222699.,  224670.,  226641.,  228612.,
      231564.,  233544.,  235524.,  237504.,  1251696., 1256672., 1261648.,
      1266624., 1275520., 1280512., 1285504., 1290496., 1299472., 1304480.,
      1309488., 1314496., 1323552., 1328576., 1333600., 1338624., 1543780.,
      1550120., 1556460., 1562800., 1573880., 1580240., 1586600., 1592960.,
      1604140., 1610520., 1616900., 1623280., 1634560., 1640960., 1647360.,
      1653760., 1581060., 1587560., 1594060., 1600560., 1611800., 1618320.,
      1624840., 1631360., 1642700., 1649240., 1655780., 1662320., 1673760.,
      1680320., 1686880., 1693440., 895628.,  899576.,  903524.,  907472.,
      914072.,  918032.,  921992.,  925952.,  932612.,  936584.,  940556.,
      944528.,  951248.,  955232.,  959216.,  963200.,  1547180., 1554360.,
      1561540., 1568720., 1580000., 1587200., 1594400., 1601600., 1612980.,
      1620200., 1627420., 1634640., 1646120., 1653360., 1660600., 1667840.,
      1892325., 1901450., 1910575., 1919700., 1933750., 1942900., 1952050.,
      1961200., 1975375., 1984550., 1993725., 2002900., 2017200., 2026400.,
      2035600., 2044800., 1930925., 1940250., 1949575., 1958900., 1973150.,
      1982500., 1991850., 2001200., 2015575., 2024950., 2034325., 2043700.,
      2058200., 2067600., 2077000., 2086400., 1078375., 1084030., 1089685.,
      1095340., 1103710., 1109380., 1115050., 1120720., 1129165., 1134850.,
      1140535., 1146220., 1154740., 1160440., 1166140., 1171840., 1804460.,
      1812920., 1821380., 1829840., 1842400., 1850880., 1859360., 1867840.,
      1880500., 1889000., 1897500., 1906000., 1918760., 1927280., 1935800.,
      1944320., 2201125., 2211850., 2222575., 2233300., 2248950., 2259700.,
      2270450., 2281200., 2296975., 2307750., 2318525., 2329300., 2345200.,
      2356000., 2366800., 2377600., 2239725., 2250650., 2261575., 2272500.,
      2288350., 2299300., 2310250., 2321200., 2337175., 2348150., 2359125.,
      2370100., 2386200., 2397200., 2408200., 2419200., 1248295., 1254910.,
      1261525., 1268140., 1277470., 1284100., 1290730., 1297360., 1306765.,
      1313410., 1320055., 1326700., 1336180., 1342840., 1349500., 1356160.,
      682100.,  687560.,  693020.,  698480.,  705440.,  710912.,  716384.,
      721856.,  728876.,  734360.,  739844.,  745328.,  752408.,  757904.,
      763400.,  768896.,  808915.,  815830.,  822745.,  829660.,  838330.,
      845260.,  852190.,  859120.,  867865.,  874810.,  881755.,  888700.,
      897520.,  904480.,  911440.,  918400.,  822475.,  829510.,  836545.,
      843580.,  852370.,  859420.,  866470.,  873520.,  882385.,  889450.,
      896515.,  903580.,  912520.,  919600.,  926680.,  933760.,  428673.,
      432930.,  437187.,  441444.,  446610.,  450876.,  455142.,  459408.,
      464619.,  468894.,  473169.,  477444.,  482700.,  486984.,  491268.,
      495552.,  2238832., 2247904., 2256976., 2266048., 2279040., 2288128.,
      2297216., 2306304., 2319376., 2328480., 2337584., 2346688., 2359840.,
      2368960., 2378080., 2387200., 2736740., 2748200., 2759660., 2771120.,
      2787320., 2798800., 2810280., 2821760., 2838060., 2849560., 2861060.,
      2872560., 2888960., 2900480., 2912000., 2923520., 2774020., 2785640.,
      2797260., 2808880., 2825240., 2836880., 2848520., 2860160., 2876620.,
      2888280., 2899940., 2911600., 2928160., 2939840., 2951520., 2963200.,
      1562252., 1569272., 1576292., 1583312., 1592984., 1600016., 1607048.,
      1614080., 1623812., 1630856., 1637900., 1644944., 1654736., 1661792.,
      1668848., 1675904., 2576300., 2588600., 2600900., 2613200., 2629600.,
      2641920., 2654240., 2666560., 2683060., 2695400., 2707740., 2720080.,
      2736680., 2749040., 2761400., 2773760., 3127525., 3143050., 3158575.,
      3174100., 3194550., 3210100., 3225650., 3241200., 3261775., 3277350.,
      3292925., 3308500., 3329200., 3344800., 3360400., 3376000., 3166125.,
      3181850., 3197575., 3213300., 3233950., 3249700., 3265450., 3281200.,
      3301975., 3317750., 3333525., 3349300., 3370200., 3386000., 3401800.,
      3417600., 1758055., 1767550., 1777045., 1786540., 1798750., 1808260.,
      1817770., 1827280., 1839565., 1849090., 1858615., 1868140., 1880500.,
      1890040., 1899580., 1909120., 2833580., 2847160., 2860740., 2874320.,
      2892000., 2905600., 2919200., 2932800., 2950580., 2964200., 2977820.,
      2991440., 3009320., 3022960., 3036600., 3050240., 3436325., 3453450.,
      3470575., 3487700., 3509750., 3526900., 3544050., 3561200., 3583375.,
      3600550., 3617725., 3634900., 3657200., 3674400., 3691600., 3708800.,
      3474925., 3492250., 3509575., 3526900., 3549150., 3566500., 3583850.,
      3601200., 3623575., 3640950., 3658325., 3675700., 3698200., 3715600.,
      3733000., 3750400., 1927975., 1938430., 1948885., 1959340., 1972510.,
      1982980., 1993450., 2003920., 2017165., 2027650., 2038135., 2048620.,
      2061940., 2072440., 2082940., 2093440., 1053812., 1062344., 1070876.,
      1079408., 1089440., 1097984., 1106528., 1115072., 1125164., 1133720.,
      1142276., 1150832., 1160984., 1169552., 1178120., 1186688., 1242835.,
      1253590., 1264345., 1275100., 1287610., 1298380., 1309150., 1319920.,
      1332505., 1343290., 1354075., 1364860., 1377520., 1388320., 1399120.,
      1409920., 1256395., 1267270., 1278145., 1289020., 1301650., 1312540.,
      1323430., 1334320., 1347025., 1357930., 1368835., 1379740., 1392520.,
      1403440., 1414360., 1425280., 652161.,  658722.,  665283.,  671844.,
      679314.,  685884.,  692454.,  699024.,  706539.,  713118.,  719697.,
      726276.,  733836.,  740424.,  747012.,  753600.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      483425.,  485250.,  487075.,  488900.,  495650.,  497500.,  499350.,
      501200.,  508075.,  509950.,  511825.,  513700.,  520700.,  522600.,
      524500.,  526400.,  522025.,  524050.,  526075.,  528100.,  535050.,
      537100.,  539150.,  541200.,  548275.,  550350.,  552425.,  554500.,
      561700.,  563800.,  565900.,  568000.,  792225.,  795650.,  799075.,
      802500.,  810850.,  814300.,  817750.,  821200.,  829675.,  833150.,
      836625.,  840100.,  848700.,  852200.,  855700.,  859200.,  830825.,
      834450.,  838075.,  841700.,  850250.,  853900.,  857550.,  861200.,
      869875.,  873550.,  877225.,  880900.,  889700.,  893400.,  897100.,
      900800.,  1718625., 1726850., 1735075., 1743300., 1756450., 1764700.,
      1772950., 1781200., 1794475., 1802750., 1811025., 1819300., 1832700.,
      1841000., 1849300., 1857600., 1757225., 1765650., 1774075., 1782500.,
      1795850., 1804300., 1812750., 1821200., 1834675., 1843150., 1851625.,
      1860100., 1873700., 1882200., 1890700., 1899200., 2027425., 2037250.,
      2047075., 2056900., 2071650., 2081500., 2091350., 2101200., 2116075.,
      2125950., 2135825., 2145700., 2160700., 2170600., 2180500., 2190400.,
      2066025., 2076050., 2086075., 2096100., 2111050., 2121100., 2131150.,
      2141200., 2156275., 2166350., 2176425., 2186500., 2201700., 2211800.,
      2221900., 2232000., 2953825., 2968450., 2983075., 2997700., 3017250.,
      3031900., 3046550., 3061200., 3080875., 3095550., 3110225., 3124900.,
      3144700., 3159400., 3174100., 3188800., 2992425., 3007250., 3022075.,
      3036900., 3056650., 3071500., 3086350., 3101200., 3121075., 3135950.,
      3150825., 3165700., 3185700., 3200600., 3215500., 3230400., 3262625.,
      3278850., 3295075., 3311300., 3332450., 3348700., 3364950., 3381200.,
      3402475., 3418750., 3435025., 3451300., 3472700., 3489000., 3505300.,
      3521600., 3301225., 3317650., 3334075., 3350500., 3371850., 3388300.,
      3404750., 3421200., 3442675., 3459150., 3475625., 3492100., 3513700.,
      3530200., 3546700., 3563200.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5500.,  7180.,  7800.,  8420.,  4934.,  10800., 13600., 14250., 14900.,
      8530.,  16200., 20100., 20750., 21400., 12130., 6790.,  8210.,  8450.,
      8690.,  4653.,  25980., 31980., 32600., 33220., 18854., 32400., 39600.,
      40250., 40900., 22930., 37800., 46100., 46750., 47400., 26530., 14950.,
      17810., 18050., 18290., 9693.,  46460., 56780., 57400., 58020., 32774.,
      54000., 65600., 66250., 66900., 37330., 59400., 72100., 72750., 73400.,
      40930., 23110., 27410., 27650., 27890., 14733.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10025., 10675., 11325., 16525., 17175., 17825., 36025., 36675., 37325.,
      42525., 43175., 43825., 62025., 62675., 63325., 68525., 69175., 69825.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10720.,  11000.,  13980.,  14360.,  15180.,  15600.,  16380.,  16840.,
      9580.,   9868.,   20950.,  21600.,  26350.,  27200.,  27600.,  28500.,
      28850.,  29800.,  16475.,  17060.,  31350.,  32400.,  38850.,  40200.,
      40100.,  41500.,  41350.,  42800.,  23375.,  24260.,  12830.,  13580.,
      15460.,  16420.,  15910.,  16900.,  16360.,  17380.,  8685.,   9306.,
      50400.,  51960.,  61980.,  63960.,  63180.,  65200.,  64380.,  66440.,
      36460.,  37708.,  62550.,  64800.,  76350.,  79200.,  77600.,  80500.,
      78850.,  81800.,  44075.,  45860.,  72950.,  75600.,  88850.,  92200.,
      90100.,  93500.,  91350.,  94800.,  50975.,  53060.,  28190.,  29900.,
      33460.,  35620.,  33910.,  36100.,  34360.,  36580.,  18045.,  19386.,
      90080.,  92920.,  109980., 113560., 111180., 114800., 112380., 116040.,
      63340.,  65548.,  104150., 108000., 126350., 131200., 127600., 132500.,
      128850., 133800., 71675.,  74660.,  114550., 118800., 138850., 144200.,
      140100., 145500., 141350., 146800., 78575.,  81860.,  43550.,  46220.,
      51460.,  54820.,  51910.,  55300.,  52360.,  55780.,  27405.,  29466.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19475.,  20050.,  20725.,  21350.,  21975.,  22650.,  31975.,  33050.,
      33225.,  34350.,  34475.,  35650.,  69475.,  72050.,  70725.,  73350.,
      71975.,  74650.,  81975.,  85050.,  83225.,  86350.,  84475.,  87650.,
      119475., 124050., 120725., 125350., 121975., 126650., 131975., 137050.,
      133225., 138350., 134475., 139650.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21160.,  21440.,  21720.,  22000.,  27580.,  27960.,  28340.,  28720.,
      29940.,  30360.,  30780.,  31200.,  32300.,  32760.,  33220.,  33680.,
      18872.,  19160.,  19448.,  19736.,  41250.,  41900.,  42550.,  43200.,
      51850.,  52700.,  53550.,  54400.,  54300.,  55200.,  56100.,  57000.,
      56750.,  57700.,  58650.,  59600.,  32365.,  32950.,  33535.,  34120.,
      61650.,  62700.,  63750.,  64800.,  76350.,  77700.,  79050.,  80400.,
      78800.,  80200.,  81600.,  83000.,  81250.,  82700.,  84150.,  85600.,
      45865.,  46750.,  47635.,  48520.,  24910.,  25660.,  26410.,  27160.,
      29960.,  30920.,  31880.,  32840.,  30830.,  31820.,  32810.,  33800.,
      31700.,  32720.,  33740.,  34760.,  16749.,  17370.,  17991.,  18612.,
      99240.,  100800., 102360., 103920., 121980., 123960., 125940., 127920.,
      124340., 126360., 128380., 130400., 126700., 128760., 130820., 132880.,
      71672.,  72920.,  74168.,  75416.,  122850., 125100., 127350., 129600.,
      149850., 152700., 155550., 158400., 152300., 155200., 158100., 161000.,
      154750., 157700., 160650., 163600., 86365.,  88150.,  89935.,  91720.,
      143250., 145900., 148550., 151200., 174350., 177700., 181050., 184400.,
      176800., 180200., 183600., 187000., 179250., 182700., 186150., 189600.,
      99865.,  101950., 104035., 106120., 54670.,  56380.,  58090.,  59800.,
      64760.,  66920.,  69080.,  71240.,  65630.,  67820.,  70010.,  72200.,
      66500.,  68720.,  70940.,  73160.,  34749.,  36090.,  37431.,  38772.,
      177320., 180160., 183000., 185840., 216380., 219960., 223540., 227120.,
      218740., 222360., 225980., 229600., 221100., 224760., 228420., 232080.,
      124472., 126680., 128888., 131096., 204450., 208300., 212150., 216000.,
      247850., 252700., 257550., 262400., 250300., 255200., 260100., 265000.,
      252750., 257700., 262650., 267600., 140365., 143350., 146335., 149320.,
      224850., 229100., 233350., 237600., 272350., 277700., 283050., 288400.,
      274800., 280200., 285600., 291000., 277250., 282700., 288150., 293600.,
      153865., 157150., 160435., 163720., 84430.,  87100.,  89770.,  92440.,
      99560.,  102920., 106280., 109640., 100430., 103820., 107210., 110600.,
      101300., 104720., 108140., 111560., 52749.,  54810.,  56871.,  58932.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38375.,  38950.,  39525.,  40100.,  40825.,  41450.,  42075.,  42700.,
      43275.,  43950.,  44625.,  45300.,  62875.,  63950.,  65025.,  66100.,
      65325.,  66450.,  67575.,  68700.,  67775.,  68950.,  70125.,  71300.,
      136375., 138950., 141525., 144100., 138825., 141450., 144075., 146700.,
      141275., 143950., 146625., 149300., 160875., 163950., 167025., 170100.,
      163325., 166450., 169575., 172700., 165775., 168950., 172125., 175300.,
      234375., 238950., 243525., 248100., 236825., 241450., 246075., 250700.,
      239275., 243950., 248625., 253300., 258875., 263950., 269025., 274100.,
      261325., 266450., 271575., 276700., 263775., 268950., 274125., 279300.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20944.,  22000.,  27360.,  28720.,  29760.,  31200.,  32160.,  33680.,
      18824.,  19736.,  41380.,  43200.,  52075.,  54400.,  54575.,  57000.,
      57075.,  59600.,  32605.,  34120.,  62180.,  64800.,  77075.,  80400.,
      79575.,  83000.,  82075.,  85600.,  46405.,  48520.,  25468.,  27160.,
      30695.,  32840.,  31595.,  33800.,  32495.,  34760.,  17253.,  18612.,
      100304., 103920., 123360., 127920., 125760., 130400., 128160., 132880.,
      72584.,  75416.,  124580., 129600., 152075., 158400., 154575., 161000.,
      157075., 163600., 87805.,  91720.,  145380., 151200., 177075., 184400.,
      179575., 187000., 182075., 189600., 101605., 106120., 56188.,  59800.,
      66695.,  71240.,  67595.,  72200.,  68495.,  73160.,  35973.,  38772.,
      179664., 185840., 219360., 227120., 221760., 229600., 224160., 232080.,
      126344., 131096., 207780., 216000., 252075., 262400., 254575., 265000.,
      257075., 267600., 143005., 149320., 228580., 237600., 277075., 288400.,
      279575., 291000., 282075., 293600., 156805., 163720., 86908.,  92440.,
      102695., 109640., 103595., 110600., 104495., 111560., 54693.,  58932.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38325.,  40100.,  40825.,  42700.,  43325.,  45300.,  63325.,  66100.,
      65825.,  68700.,  68325.,  71300.,  138325., 144100., 140825., 146700.,
      143325., 149300., 163325., 170100., 165825., 172700., 168325., 175300.,
      238325., 248100., 240825., 250700., 243325., 253300., 263325., 274100.,
      265825., 276700., 268325., 279300.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41344.,  41888.,  43440.,  44000.,  53980.,  54720.,  56680.,  57440.,
      58700.,  59520.,  61560.,  62400.,  63420.,  64320.,  66440.,  67360.,
      37084.,  37648.,  38896.,  39472.,  81480.,  82760.,  85100.,  86400.,
      102475., 104150., 107100., 108800., 107375., 109150., 112200., 114000.,
      112275., 114150., 117300., 119200., 64055.,  65210.,  67070.,  68240.,
      122280., 124360., 127500., 129600., 151475., 154150., 158100., 160800.,
      156375., 159150., 163200., 166000., 161275., 164150., 168300., 171200.,
      91055.,  92810.,  95270.,  97040.,  49448.,  50936.,  52820.,  54320.,
      59485.,  61390.,  63760.,  65680.,  61225.,  63190.,  65620.,  67600.,
      62965.,  64990.,  67480.,  69520.,  33273.,  34506.,  35982.,  37224.,
      197504., 200608., 204720., 207840., 242780., 246720., 251880., 255840.,
      247500., 251520., 256760., 260800., 252220., 256320., 261640., 265760.,
      142684., 145168., 148336., 150832., 244680., 249160., 254700., 259200.,
      298475., 304150., 311100., 316800., 303375., 309150., 316200., 322000.,
      308275., 314150., 321300., 327200., 172055., 175610., 179870., 183440.,
      285480., 290760., 297100., 302400., 347475., 354150., 362100., 368800.,
      352375., 359150., 367200., 374000., 357275., 364150., 372300., 379200.,
      199055., 203210., 208070., 212240., 108968., 112376., 116180., 119600.,
      129085., 133390., 138160., 142480., 130825., 135190., 140020., 144400.,
      132565., 136990., 141880., 146320., 69273.,  71946.,  74862.,  77544.,
      353664., 359328., 366000., 371680., 431580., 438720., 447080., 454240.,
      436300., 443520., 451960., 459200., 441020., 448320., 456840., 464160.,
      248284., 252688., 257776., 262192., 407880., 415560., 424300., 432000.,
      494475., 504150., 515100., 524800., 499375., 509150., 520200., 530000.,
      504275., 514150., 525300., 535200., 280055., 286010., 292670., 298640.,
      448680., 457160., 466700., 475200., 543475., 554150., 566100., 576800.,
      548375., 559150., 571200., 582000., 553275., 564150., 576300., 587200.,
      307055., 313610., 320870., 327440., 168488., 173816., 179540., 184880.,
      198685., 205390., 212560., 219280., 200425., 207190., 214420., 221200.,
      202165., 208990., 216280., 223120., 105273., 109386., 113742., 117864.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      75525.,  76650.,  79050.,  80200.,  80425.,  81650.,  84150.,  85400.,
      85325.,  86650.,  89250.,  90600.,  124525., 126650., 130050., 132200.,
      129425., 131650., 135150., 137400., 134325., 136650., 140250., 142600.,
      271525., 276650., 283050., 288200., 276425., 281650., 288150., 293400.,
      281325., 286650., 293250., 298600., 320525., 326650., 334050., 340200.,
      325425., 331650., 339150., 345400., 330325., 336650., 344250., 350600.,
      467525., 476650., 487050., 496200., 472425., 481650., 492150., 501400.,
      477325., 486650., 497250., 506600., 516525., 526650., 538050., 548200.,
      521425., 531650., 543150., 553400., 526325., 536650., 548250., 558600.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      82144.,   82688.,   83232.,   83776.,   86320.,   86880.,   87440.,
      88000.,   107220.,  107960.,  108700.,  109440.,  112600.,  113360.,
      114120.,  114880.,  116580.,  117400.,  118220.,  119040.,  122280.,
      123120.,  123960.,  124800.,  125940.,  126840.,  127740.,  128640.,
      131960.,  132880.,  133800.,  134720.,  73604.,   74168.,   74732.,
      75296.,   77216.,   77792.,   78368.,   78944.,   161680.,  162960.,
      164240.,  165520.,  168900.,  170200.,  171500.,  172800.,  203275.,
      204950.,  206625.,  208300.,  212500.,  214200.,  215900.,  217600.,
      212975.,  214750.,  216525.,  218300.,  222600.,  224400.,  226200.,
      228000.,  222675.,  224550.,  226425.,  228300.,  232700.,  234600.,
      236500.,  238400.,  126955.,  128110.,  129265.,  130420.,  132970.,
      134140.,  135310.,  136480.,  242480.,  244560.,  246640.,  248720.,
      252900.,  255000.,  257100.,  259200.,  300275.,  302950.,  305625.,
      308300.,  313500.,  316200.,  318900.,  321600.,  309975.,  312750.,
      315525.,  318300.,  323600.,  326400.,  329200.,  332000.,  319675.,
      322550.,  325425.,  328300.,  333700.,  336600.,  339500.,  342400.,
      180355.,  182110.,  183865.,  185620.,  188770.,  190540.,  192310.,
      194080.,  97408.,   98896.,   100384.,  101872.,  104140.,  105640.,
      107140.,  108640.,  117065.,  118970.,  120875.,  122780.,  125600.,
      127520.,  129440.,  131360.,  120485.,  122450.,  124415.,  126380.,
      129260.,  131240.,  133220.,  135200.,  123905.,  125930.,  127955.,
      129980.,  132920.,  134960.,  137000.,  139040.,  65313.,   66546.,
      67779.,   69012.,   70722.,   71964.,   73206.,   74448.,   391904.,
      395008.,  398112.,  401216.,  406320.,  409440.,  412560.,  415680.,
      481620.,  485560.,  489500.,  493440.,  499800.,  503760.,  507720.,
      511680.,  490980.,  495000.,  499020.,  503040.,  509480.,  513520.,
      517560.,  521600.,  500340.,  504440.,  508540.,  512640.,  519160.,
      523280.,  527400.,  531520.,  282884.,  285368.,  287852.,  290336.,
      294176.,  296672.,  299168.,  301664.,  484880.,  489360.,  493840.,
      498320.,  504900.,  509400.,  513900.,  518400.,  591275.,  596950.,
      602625.,  608300.,  616500.,  622200.,  627900.,  633600.,  600975.,
      606750.,  612525.,  618300.,  626600.,  632400.,  638200.,  644000.,
      610675.,  616550.,  622425.,  628300.,  636700.,  642600.,  648500.,
      654400.,  340555.,  344110.,  347665.,  351220.,  356170.,  359740.,
      363310.,  366880.,  565680.,  570960.,  576240.,  581520.,  588900.,
      594200.,  599500.,  604800.,  688275.,  694950.,  701625.,  708300.,
      717500.,  724200.,  730900.,  737600.,  697975.,  704750.,  711525.,
      718300.,  727600.,  734400.,  741200.,  748000.,  707675.,  714550.,
      721425.,  728300.,  737700.,  744600.,  751500.,  758400.,  393955.,
      398110.,  402265.,  406420.,  411970.,  416140.,  420310.,  424480.,
      214528.,  217936.,  221344.,  224752.,  228940.,  232360.,  235780.,
      239200.,  253865.,  258170.,  262475.,  266780.,  272000.,  276320.,
      280640.,  284960.,  257285.,  261650.,  266015.,  270380.,  275660.,
      280040.,  284420.,  288800.,  260705.,  265130.,  269555.,  273980.,
      279320.,  283760.,  288200.,  292640.,  135873.,  138546.,  141219.,
      143892.,  147042.,  149724.,  152406.,  155088.,  701664.,  707328.,
      712992.,  718656.,  726320.,  732000.,  737680.,  743360.,  856020.,
      863160.,  870300.,  877440.,  887000.,  894160.,  901320.,  908480.,
      865380.,  872600.,  879820.,  887040.,  896680.,  903920.,  911160.,
      918400.,  874740.,  882040.,  889340.,  896640.,  906360.,  913680.,
      921000.,  928320.,  492164.,  496568.,  500972.,  505376.,  511136.,
      515552.,  519968.,  524384.,  808080.,  815760.,  823440.,  831120.,
      840900.,  848600.,  856300.,  864000.,  979275.,  988950.,  998625.,
      1008300., 1020500., 1030200., 1039900., 1049600., 988975.,  998750.,
      1008525., 1018300., 1030600., 1040400., 1050200., 1060000., 998675.,
      1008550., 1018425., 1028300., 1040700., 1050600., 1060500., 1070400.,
      554155.,  560110.,  566065.,  572020.,  579370.,  585340.,  591310.,
      597280.,  888880.,  897360.,  905840.,  914320.,  924900.,  933400.,
      941900.,  950400.,  1076275., 1086950., 1097625., 1108300., 1121500.,
      1132200., 1142900., 1153600., 1085975., 1096750., 1107525., 1118300.,
      1131600., 1142400., 1153200., 1164000., 1095675., 1106550., 1117425.,
      1128300., 1141700., 1152600., 1163500., 1174400., 607555.,  614110.,
      620665.,  627220.,  635170.,  641740.,  648310.,  654880.,  331648.,
      336976.,  342304.,  347632.,  353740.,  359080.,  364420.,  369760.,
      390665.,  397370.,  404075.,  410780.,  418400.,  425120.,  431840.,
      438560.,  394085.,  400850.,  407615.,  414380.,  422060.,  428840.,
      435620.,  442400.,  397505.,  404330.,  411155.,  417980.,  425720.,
      432560.,  439400.,  446240.,  206433.,  210546.,  214659.,  218772.,
      223362.,  227484.,  231606.,  235728.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      149925.,  151050.,  152175.,  153300.,  156950.,  158100.,  159250.,
      160400.,  159625.,  160850.,  162075.,  163300.,  167050.,  168300.,
      169550.,  170800.,  169325.,  170650.,  171975.,  173300.,  177150.,
      178500.,  179850.,  181200.,  246925.,  249050.,  251175.,  253300.,
      257950.,  260100.,  262250.,  264400.,  256625.,  258850.,  261075.,
      263300.,  268050.,  270300.,  272550.,  274800.,  266325.,  268650.,
      270975.,  273300.,  278150.,  280500.,  282850.,  285200.,  537925.,
      543050.,  548175.,  553300.,  560950.,  566100.,  571250.,  576400.,
      547625.,  552850.,  558075.,  563300.,  571050.,  576300.,  581550.,
      586800.,  557325.,  562650.,  567975.,  573300.,  581150.,  586500.,
      591850.,  597200.,  634925.,  641050.,  647175.,  653300.,  661950.,
      668100.,  674250.,  680400.,  644625.,  650850.,  657075.,  663300.,
      672050.,  678300.,  684550.,  690800.,  654325.,  660650.,  666975.,
      673300.,  682150.,  688500.,  694850.,  701200.,  925925.,  935050.,
      944175.,  953300.,  964950.,  974100.,  983250.,  992400.,  935625.,
      944850.,  954075.,  963300.,  975050.,  984300.,  993550.,  1002800.,
      945325.,  954650.,  963975.,  973300.,  985150.,  994500.,  1003850.,
      1013200., 1022925., 1033050., 1043175., 1053300., 1065950., 1076100.,
      1086250., 1096400., 1032625., 1042850., 1053075., 1063300., 1076050.,
      1086300., 1096550., 1106800., 1042325., 1052650., 1062975., 1073300.,
      1086150., 1096500., 1106850., 1117200.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      81712.,   83776.,   85872.,   88000.,   106780.,  109440.,  112140.,
      114880.,  116220.,  119040.,  121900.,  124800.,  125660.,  128640.,
      131660.,  134720.,  73508.,   75296.,   77108.,   78944.,   161940.,
      165520.,  169140.,  172800.,  203725.,  208300.,  212925.,  217600.,
      213525.,  218300.,  223125.,  228000.,  223325.,  228300.,  233325.,
      238400.,  127435.,  130420.,  133435.,  136480.,  243540.,  248720.,
      253940.,  259200.,  301725.,  308300.,  314925.,  321600.,  311525.,
      318300.,  325125.,  332000.,  321325.,  328300.,  335325.,  342400.,
      181435.,  185620.,  189835.,  194080.,  98524.,   101872.,  105244.,
      108640.,  118535.,  122780.,  127055.,  131360.,  122015.,  126380.,
      130775.,  135200.,  125495.,  129980.,  134495.,  139040.,  66321.,
      69012.,   71721.,   74448.,   394032.,  401216.,  408432.,  415680.,
      484380.,  493440.,  502540.,  511680.,  493820.,  503040.,  512300.,
      521600.,  503260.,  512640.,  522060.,  531520.,  284708.,  290336.,
      295988.,  301664.,  488340.,  498320.,  508340.,  518400.,  595725.,
      608300.,  620925.,  633600.,  605525.,  618300.,  631125.,  644000.,
      615325.,  628300.,  641325.,  654400.,  343435.,  351220.,  359035.,
      366880.,  569940.,  581520.,  593140.,  604800.,  693725.,  708300.,
      722925.,  737600.,  703525.,  718300.,  733125.,  748000.,  713325.,
      728300.,  743325.,  758400.,  397435.,  406420.,  415435.,  424480.,
      217564.,  224752.,  231964.,  239200.,  257735.,  266780.,  275855.,
      284960.,  261215.,  270380.,  279575.,  288800.,  264695.,  273980.,
      283295.,  292640.,  138321.,  143892.,  149481.,  155088.,  706352.,
      718656.,  730992.,  743360.,  861980.,  877440.,  892940.,  908480.,
      871420.,  887040.,  902700.,  918400.,  880860.,  896640.,  912460.,
      928320.,  495908.,  505376.,  514868.,  524384.,  814740.,  831120.,
      847540.,  864000.,  987725.,  1008300., 1028925., 1049600., 997525.,
      1018300., 1039125., 1060000., 1007325., 1028300., 1049325., 1070400.,
      559435.,  572020.,  584635.,  597280.,  896340.,  914320.,  932340.,
      950400.,  1085725., 1108300., 1130925., 1153600., 1095525., 1118300.,
      1141125., 1164000., 1105325., 1128300., 1151325., 1174400., 613435.,
      627220.,  641035.,  654880.,  336604.,  347632.,  358684.,  369760.,
      396935.,  410780.,  424655.,  438560.,  400415.,  414380.,  428375.,
      442400.,  403895.,  417980.,  432095.,  446240.,  210321.,  218772.,
      227241.,  235728.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      149825.,  153300.,  156825.,  160400.,  159625.,  163300.,  167025.,
      170800.,  169425.,  173300.,  177225.,  181200.,  247825.,  253300.,
      258825.,  264400.,  257625.,  263300.,  269025.,  274800.,  267425.,
      273300.,  279225.,  285200.,  541825.,  553300.,  564825.,  576400.,
      551625.,  563300.,  575025.,  586800.,  561425.,  573300.,  585225.,
      597200.,  639825.,  653300.,  666825.,  680400.,  649625.,  663300.,
      677025.,  690800.,  659425.,  673300.,  687225.,  701200.,  933825.,
      953300.,  972825.,  992400.,  943625.,  963300.,  983025.,  1002800.,
      953425.,  973300.,  993225.,  1013200., 1031825., 1053300., 1074825.,
      1096400., 1041625., 1063300., 1085025., 1106800., 1051425., 1073300.,
      1095225., 1117200.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      162352.,  163424.,  166464.,  167552.,  170640.,  171744.,  174880.,
      176000.,  212100.,  213560.,  217400.,  218880.,  222780.,  224280.,
      228240.,  229760.,  230820.,  232440.,  236440.,  238080.,  242140.,
      243800.,  247920.,  249600.,  249540.,  251320.,  255480.,  257280.,
      261500.,  263320.,  267600.,  269440.,  145900.,  147016.,  149464.,
      150592.,  153076.,  154216.,  156736.,  157888.,  321340.,  323880.,
      328480.,  331040.,  335700.,  338280.,  343000.,  345600.,  404125.,
      407450.,  413250.,  416600.,  422475.,  425850.,  431800.,  435200.,
      423525.,  427050.,  433050.,  436600.,  442675.,  446250.,  452400.,
      456000.,  442925.,  446650.,  452850.,  456600.,  462875.,  466650.,
      473000.,  476800.,  252575.,  254870.,  258530.,  260840.,  264545.,
      266870.,  270620.,  272960.,  482940.,  487080.,  493280.,  497440.,
      503700.,  507880.,  514200.,  518400.,  598125.,  603450.,  611250.,
      616600.,  624475.,  629850.,  637800.,  643200.,  617525.,  623050.,
      631050.,  636600.,  644675.,  650250.,  658400.,  664000.,  636925.,
      642650.,  650850.,  656600.,  664875.,  670650.,  679000.,  684800.,
      359375.,  362870.,  367730.,  371240.,  376145.,  379670.,  384620.,
      388160.,  194084.,  197048.,  200768.,  203744.,  207500.,  210488.,
      214280.,  217280.,  233275.,  237070.,  241750.,  245560.,  250285.,
      254110.,  258880.,  262720.,  240115.,  244030.,  248830.,  252760.,
      257605.,  261550.,  266440.,  270400.,  246955.,  250990.,  255910.,
      259960.,  264925.,  268990.,  274000.,  278080.,  130185.,  132642.,
      135558.,  138024.,  140967.,  143442.,  146412.,  148896.,  781872.,
      788064.,  796224.,  802432.,  810640.,  816864.,  825120.,  831360.,
      960900.,  968760.,  979000.,  986880.,  997180.,  1005080., 1015440.,
      1023360., 979620.,  987640.,  998040.,  1006080., 1016540., 1024600.,
      1035120., 1043200., 998340.,  1006520., 1017080., 1025280., 1035900.,
      1044120., 1054800., 1063040., 564460.,  569416.,  575704.,  580672.,
      586996.,  591976.,  598336.,  603328.,  967740.,  976680.,  987680.,
      996640.,  1007700., 1016680., 1027800., 1036800., 1180125., 1191450.,
      1205250., 1216600., 1230475., 1241850., 1255800., 1267200., 1199525.,
      1211050., 1225050., 1236600., 1250675., 1262250., 1276400., 1288000.,
      1218925., 1230650., 1244850., 1256600., 1270875., 1282650., 1297000.,
      1308800., 679775.,  686870.,  695330.,  702440.,  710945.,  718070.,
      726620.,  733760.,  1129340., 1139880., 1152480., 1163040., 1175700.,
      1186280., 1199000., 1209600., 1374125., 1387450., 1403250., 1416600.,
      1432475., 1445850., 1461800., 1475200., 1393525., 1407050., 1423050.,
      1436600., 1452675., 1466250., 1482400., 1496000., 1412925., 1426650.,
      1442850., 1456600., 1472875., 1486650., 1503000., 1516800., 786575.,
      794870.,  804530.,  812840.,  822545.,  830870.,  840620.,  848960.,
      428324.,  435128.,  442688.,  449504.,  457100.,  463928.,  471560.,
      478400.,  506875.,  515470.,  524950.,  533560.,  543085.,  551710.,
      561280.,  569920.,  513715.,  522430.,  532030.,  540760.,  550405.,
      559150.,  568840.,  577600.,  520555.,  529390.,  539110.,  547960.,
      557725.,  566590.,  576400.,  585280.,  271305.,  276642.,  282438.,
      287784.,  293607.,  298962.,  304812.,  310176.,  1401392., 1412704.,
      1425984., 1437312., 1450640., 1461984., 1475360., 1486720., 1709700.,
      1723960., 1740600., 1754880., 1771580., 1785880., 1802640., 1816960.,
      1728420., 1742840., 1759640., 1774080., 1790940., 1805400., 1822320.,
      1836800., 1747140., 1761720., 1778680., 1793280., 1810300., 1824920.,
      1842000., 1856640., 983020.,  991816.,  1001944., 1010752., 1020916.,
      1029736., 1039936., 1048768., 1614140., 1629480., 1646880., 1662240.,
      1679700., 1695080., 1712600., 1728000., 1956125., 1975450., 1997250.,
      2016600., 2038475., 2057850., 2079800., 2099200., 1975525., 1995050.,
      2017050., 2036600., 2058675., 2078250., 2100400., 2120000., 1994925.,
      2014650., 2036850., 2056600., 2078875., 2098650., 2121000., 2140800.,
      1106975., 1118870., 1132130., 1144040., 1157345., 1169270., 1182620.,
      1194560., 1775740., 1792680., 1811680., 1828640., 1847700., 1864680.,
      1883800., 1900800., 2150125., 2171450., 2195250., 2216600., 2240475.,
      2261850., 2285800., 2307200., 2169525., 2191050., 2215050., 2236600.,
      2260675., 2282250., 2306400., 2328000., 2188925., 2210650., 2234850.,
      2256600., 2280875., 2302650., 2327000., 2348800., 1213775., 1226870.,
      1241330., 1254440., 1268945., 1282070., 1296620., 1309760., 662564.,
      673208.,  684608.,  695264.,  706700.,  717368.,  728840.,  739520.,
      780475.,  793870.,  808150.,  821560.,  835885.,  849310.,  863680.,
      877120.,  787315.,  800830.,  815230.,  828760.,  843205.,  856750.,
      871240.,  884800.,  794155.,  807790.,  822310.,  835960.,  850525.,
      864190.,  878800.,  892480.,  412425.,  420642.,  429318.,  437544.,
      446247.,  454482.,  463212.,  471456.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      297425.,  299650.,  304350.,  306600.,  311375.,  313650.,  318500.,
      320800.,  316825.,  319250.,  324150.,  326600.,  331575.,  334050.,
      339100.,  341600.,  336225.,  338850.,  343950.,  346600.,  351775.,
      354450.,  359700.,  362400.,  491425.,  495650.,  502350.,  506600.,
      513375.,  517650.,  524500.,  528800.,  510825.,  515250.,  522150.,
      526600.,  533575.,  538050.,  545100.,  549600.,  530225.,  534850.,
      541950.,  546600.,  553775.,  558450.,  565700.,  570400.,  1073425.,
      1083650., 1096350., 1106600., 1119375., 1129650., 1142500., 1152800.,
      1092825., 1103250., 1116150., 1126600., 1139575., 1150050., 1163100.,
      1173600., 1112225., 1122850., 1135950., 1146600., 1159775., 1170450.,
      1183700., 1194400., 1267425., 1279650., 1294350., 1306600., 1321375.,
      1333650., 1348500., 1360800., 1286825., 1299250., 1314150., 1326600.,
      1341575., 1354050., 1369100., 1381600., 1306225., 1318850., 1333950.,
      1346600., 1361775., 1374450., 1389700., 1402400., 1849425., 1867650.,
      1888350., 1906600., 1927375., 1945650., 1966500., 1984800., 1868825.,
      1887250., 1908150., 1926600., 1947575., 1966050., 1987100., 2005600.,
      1888225., 1906850., 1927950., 1946600., 1967775., 1986450., 2007700.,
      2026400., 2043425., 2063650., 2086350., 2106600., 2129375., 2149650.,
      2172500., 2192800., 2062825., 2083250., 2106150., 2126600., 2149575.,
      2170050., 2193100., 2213600., 2082225., 2102850., 2125950., 2146600.,
      2169775., 2190450., 2213700., 2234400.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x8x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      323632.,  324704.,  325776.,  326848.,  331840.,  332928.,  334016.,
      335104.,  340176.,  341280.,  342384.,  343488.,  348640.,  349760.,
      350880.,  352000.,  422740.,  424200.,  425660.,  427120.,  433320.,
      434800.,  436280.,  437760.,  444060.,  445560.,  447060.,  448560.,
      454960.,  456480.,  458000.,  459520.,  460020.,  461640.,  463260.,
      464880.,  471240.,  472880.,  474520.,  476160.,  482620.,  484280.,
      485940.,  487600.,  494160.,  495840.,  497520.,  499200.,  497300.,
      499080.,  500860.,  502640.,  509160.,  510960.,  512760.,  514560.,
      521180.,  523000.,  524820.,  526640.,  533360.,  535200.,  537040.,
      538880.,  290684.,  291800.,  292916.,  294032.,  297800.,  298928.,
      300056.,  301184.,  305012.,  306152.,  307292.,  308432.,  312320.,
      313472.,  314624.,  315776.,  640140.,  642680.,  645220.,  647760.,
      654400.,  656960.,  659520.,  662080.,  668820.,  671400.,  673980.,
      676560.,  683400.,  686000.,  688600.,  691200.,  804925.,  808250.,
      811575.,  814900.,  823150.,  826500.,  829850.,  833200.,  841575.,
      844950.,  848325.,  851700.,  860200.,  863600.,  867000.,  870400.,
      843525.,  847050.,  850575.,  854100.,  862550.,  866100.,  869650.,
      873200.,  881775.,  885350.,  888925.,  892500.,  901200.,  904800.,
      908400.,  912000.,  882125.,  885850.,  889575.,  893300.,  901950.,
      905700.,  909450.,  913200.,  921975.,  925750.,  929525.,  933300.,
      942200.,  946000.,  949800.,  953600.,  502855.,  505150.,  507445.,
      509740.,  514750.,  517060.,  519370.,  521680.,  526765.,  529090.,
      531415.,  533740.,  538900.,  541240.,  543580.,  545920.,  961740.,
      965880.,  970020.,  974160.,  982400.,  986560.,  990720.,  994880.,
      1003220., 1007400., 1011580., 1015760., 1024200., 1028400., 1032600.,
      1036800., 1190925., 1196250., 1201575., 1206900., 1217150., 1222500.,
      1227850., 1233200., 1243575., 1248950., 1254325., 1259700., 1270200.,
      1275600., 1281000., 1286400., 1229525., 1235050., 1240575., 1246100.,
      1256550., 1262100., 1267650., 1273200., 1283775., 1289350., 1294925.,
      1300500., 1311200., 1316800., 1322400., 1328000., 1268125., 1273850.,
      1279575., 1285300., 1295950., 1301700., 1307450., 1313200., 1323975.,
      1329750., 1335525., 1341300., 1352200., 1358000., 1363800., 1369600.,
      715255.,  718750.,  722245.,  725740.,  731950.,  735460.,  738970.,
      742480.,  748765.,  752290.,  755815.,  759340.,  765700.,  769240.,
      772780.,  776320.,  385204.,  388168.,  391132.,  394096.,  398560.,
      401536.,  404512.,  407488.,  412012.,  415000.,  417988.,  420976.,
      425560.,  428560.,  431560.,  434560.,  462755.,  466550.,  470345.,
      474140.,  479690.,  483500.,  487310.,  491120.,  496745.,  500570.,
      504395.,  508220.,  513920.,  517760.,  521600.,  525440.,  476315.,
      480230.,  484145.,  488060.,  493730.,  497660.,  501590.,  505520.,
      511265.,  515210.,  519155.,  523100.,  528920.,  532880.,  536840.,
      540800.,  489875.,  493910.,  497945.,  501980.,  507770.,  511820.,
      515870.,  519920.,  525785.,  529850.,  533915.,  537980.,  543920.,
      548000.,  552080.,  556160.,  257913.,  260370.,  262827.,  265284.,
      268650.,  271116.,  273582.,  276048.,  279459.,  281934.,  284409.,
      286884.,  290340.,  292824.,  295308.,  297792.,  1557552., 1563744.,
      1569936., 1576128., 1586240., 1592448., 1598656., 1604864., 1615056.,
      1621280., 1627504., 1633728., 1644000., 1650240., 1656480., 1662720.,
      1913940., 1921800., 1929660., 1937520., 1950120., 1958000., 1965880.,
      1973760., 1986460., 1994360., 2002260., 2010160., 2022960., 2030880.,
      2038800., 2046720., 1951220., 1959240., 1967260., 1975280., 1988040.,
      1996080., 2004120., 2012160., 2025020., 2033080., 2041140., 2049200.,
      2062160., 2070240., 2078320., 2086400., 1988500., 1996680., 2004860.,
      2013040., 2025960., 2034160., 2042360., 2050560., 2063580., 2071800.,
      2080020., 2088240., 2101360., 2109600., 2117840., 2126080., 1123964.,
      1128920., 1133876., 1138832., 1146440., 1151408., 1156376., 1161344.,
      1169012., 1173992., 1178972., 1183952., 1191680., 1196672., 1201664.,
      1206656., 1926540., 1935480., 1944420., 1953360., 1966400., 1975360.,
      1984320., 1993280., 2006420., 2015400., 2024380., 2033360., 2046600.,
      2055600., 2064600., 2073600., 2348925., 2360250., 2371575., 2382900.,
      2399150., 2410500., 2421850., 2433200., 2449575., 2460950., 2472325.,
      2483700., 2500200., 2511600., 2523000., 2534400., 2387525., 2399050.,
      2410575., 2422100., 2438550., 2450100., 2461650., 2473200., 2489775.,
      2501350., 2512925., 2524500., 2541200., 2552800., 2564400., 2576000.,
      2426125., 2437850., 2449575., 2461300., 2477950., 2489700., 2501450.,
      2513200., 2529975., 2541750., 2553525., 2565300., 2582200., 2594000.,
      2605800., 2617600., 1352455., 1359550., 1366645., 1373740., 1383550.,
      1390660., 1397770., 1404880., 1414765., 1421890., 1429015., 1436140.,
      1446100., 1453240., 1460380., 1467520., 2248140., 2258680., 2269220.,
      2279760., 2294400., 2304960., 2315520., 2326080., 2340820., 2351400.,
      2361980., 2372560., 2387400., 2398000., 2408600., 2419200., 2734925.,
      2748250., 2761575., 2774900., 2793150., 2806500., 2819850., 2833200.,
      2851575., 2864950., 2878325., 2891700., 2910200., 2923600., 2937000.,
      2950400., 2773525., 2787050., 2800575., 2814100., 2832550., 2846100.,
      2859650., 2873200., 2891775., 2905350., 2918925., 2932500., 2951200.,
      2964800., 2978400., 2992000., 2812125., 2825850., 2839575., 2853300.,
      2871950., 2885700., 2899450., 2913200., 2931975., 2945750., 2959525.,
      2973300., 2992200., 3006000., 3019800., 3033600., 1564855., 1573150.,
      1581445., 1589740., 1600750., 1609060., 1617370., 1625680., 1636765.,
      1645090., 1653415., 1661740., 1672900., 1681240., 1689580., 1697920.,
      849844.,  856648.,  863452.,  870256.,  878560.,  885376.,  892192.,
      899008.,  907372.,  914200.,  921028.,  927856.,  936280.,  943120.,
      949960.,  956800.,  1005155., 1013750., 1022345., 1030940., 1041290.,
      1049900., 1058510., 1067120., 1077545., 1086170., 1094795., 1103420.,
      1113920., 1122560., 1131200., 1139840., 1018715., 1027430., 1036145.,
      1044860., 1055330., 1064060., 1072790., 1081520., 1092065., 1100810.,
      1109555., 1118300., 1128920., 1137680., 1146440., 1155200., 1032275.,
      1041110., 1049945., 1058780., 1069370., 1078220., 1087070., 1095920.,
      1106585., 1115450., 1124315., 1133180., 1143920., 1152800., 1161680.,
      1170560., 537273.,  542610.,  547947.,  553284.,  559530.,  564876.,
      570222.,  575568.,  581859.,  587214.,  592569.,  597924.,  604260.,
      609624.,  614988.,  620352.,  2791472., 2802784., 2814096., 2825408.,
      2840640., 2851968., 2863296., 2874624., 2889936., 2901280., 2912624.,
      2923968., 2939360., 2950720., 2962080., 2973440., 3405140., 3419400.,
      3433660., 3447920., 3466920., 3481200., 3495480., 3509760., 3528860.,
      3543160., 3557460., 3571760., 3590960., 3605280., 3619600., 3633920.,
      3442420., 3456840., 3471260., 3485680., 3504840., 3519280., 3533720.,
      3548160., 3567420., 3581880., 3596340., 3610800., 3630160., 3644640.,
      3659120., 3673600., 3479700., 3494280., 3508860., 3523440., 3542760.,
      3557360., 3571960., 3586560., 3605980., 3620600., 3635220., 3649840.,
      3669360., 3684000., 3698640., 3713280., 1957244., 1966040., 1974836.,
      1983632., 1995080., 2003888., 2012696., 2021504., 2033012., 2041832.,
      2050652., 2059472., 2071040., 2079872., 2088704., 2097536., 3212940.,
      3228280., 3243620., 3258960., 3278400., 3293760., 3309120., 3324480.,
      3344020., 3359400., 3374780., 3390160., 3409800., 3425200., 3440600.,
      3456000., 3892925., 3912250., 3931575., 3950900., 3975150., 3994500.,
      4013850., 4033200., 4057575., 4076950., 4096325., 4115700., 4140200.,
      4159600., 4179000., 4198400., 3931525., 3951050., 3970575., 3990100.,
      4014550., 4034100., 4053650., 4073200., 4097775., 4117350., 4136925.,
      4156500., 4181200., 4200800., 4220400., 4240000., 3970125., 3989850.,
      4009575., 4029300., 4053950., 4073700., 4093450., 4113200., 4137975.,
      4157750., 4177525., 4197300., 4222200., 4242000., 4261800., 4281600.,
      2202055., 2213950., 2225845., 2237740., 2252350., 2264260., 2276170.,
      2288080., 2302765., 2314690., 2326615., 2338540., 2353300., 2365240.,
      2377180., 2389120., 3534540., 3551480., 3568420., 3585360., 3606400.,
      3623360., 3640320., 3657280., 3678420., 3695400., 3712380., 3729360.,
      3750600., 3767600., 3784600., 3801600., 4278925., 4300250., 4321575.,
      4342900., 4369150., 4390500., 4411850., 4433200., 4459575., 4480950.,
      4502325., 4523700., 4550200., 4571600., 4593000., 4614400., 4317525.,
      4339050., 4360575., 4382100., 4408550., 4430100., 4451650., 4473200.,
      4499775., 4521350., 4542925., 4564500., 4591200., 4612800., 4634400.,
      4656000., 4356125., 4377850., 4399575., 4421300., 4447950., 4469700.,
      4491450., 4513200., 4539975., 4561750., 4583525., 4605300., 4632200.,
      4654000., 4675800., 4697600., 2414455., 2427550., 2440645., 2453740.,
      2469550., 2482660., 2495770., 2508880., 2524765., 2537890., 2551015.,
      2564140., 2580100., 2593240., 2606380., 2619520., 1314484., 1325128.,
      1335772., 1346416., 1358560., 1369216., 1379872., 1390528., 1402732.,
      1413400., 1424068., 1434736., 1447000., 1457680., 1468360., 1479040.,
      1547555., 1560950., 1574345., 1587740., 1602890., 1616300., 1629710.,
      1643120., 1658345., 1671770., 1685195., 1698620., 1713920., 1727360.,
      1740800., 1754240., 1561115., 1574630., 1588145., 1601660., 1616930.,
      1630460., 1643990., 1657520., 1672865., 1686410., 1699955., 1713500.,
      1728920., 1742480., 1756040., 1769600., 1574675., 1588310., 1601945.,
      1615580., 1630970., 1644620., 1658270., 1671920., 1687385., 1701050.,
      1714715., 1728380., 1743920., 1757600., 1771280., 1784960., 816633.,
      824850.,  833067.,  841284.,  850410.,  858636.,  866862.,  875088.,
      884259.,  892494.,  900729.,  908964.,  918180.,  926424.,  934668.,
      942912.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x8x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      592625.,  594850.,  597075.,  599300.,  606450.,  608700.,  610950.,
      613200.,  620475.,  622750.,  625025.,  627300.,  634700.,  637000.,
      639300.,  641600.,  631225.,  633650.,  636075.,  638500.,  645850.,
      648300.,  650750.,  653200.,  660675.,  663150.,  665625.,  668100.,
      675700.,  678200.,  680700.,  683200.,  669825.,  672450.,  675075.,
      677700.,  685250.,  687900.,  690550.,  693200.,  700875.,  703550.,
      706225.,  708900.,  716700.,  719400.,  722100.,  724800.,  978625.,
      982850.,  987075.,  991300.,  1000450., 1004700., 1008950., 1013200.,
      1022475., 1026750., 1031025., 1035300., 1044700., 1049000., 1053300.,
      1057600., 1017225., 1021650., 1026075., 1030500., 1039850., 1044300.,
      1048750., 1053200., 1062675., 1067150., 1071625., 1076100., 1085700.,
      1090200., 1094700., 1099200., 1055825., 1060450., 1065075., 1069700.,
      1079250., 1083900., 1088550., 1093200., 1102875., 1107550., 1112225.,
      1116900., 1126700., 1131400., 1136100., 1140800., 2136625., 2146850.,
      2157075., 2167300., 2182450., 2192700., 2202950., 2213200., 2228475.,
      2238750., 2249025., 2259300., 2274700., 2285000., 2295300., 2305600.,
      2175225., 2185650., 2196075., 2206500., 2221850., 2232300., 2242750.,
      2253200., 2268675., 2279150., 2289625., 2300100., 2315700., 2326200.,
      2336700., 2347200., 2213825., 2224450., 2235075., 2245700., 2261250.,
      2271900., 2282550., 2293200., 2308875., 2319550., 2330225., 2340900.,
      2356700., 2367400., 2378100., 2388800., 2522625., 2534850., 2547075.,
      2559300., 2576450., 2588700., 2600950., 2613200., 2630475., 2642750.,
      2655025., 2667300., 2684700., 2697000., 2709300., 2721600., 2561225.,
      2573650., 2586075., 2598500., 2615850., 2628300., 2640750., 2653200.,
      2670675., 2683150., 2695625., 2708100., 2725700., 2738200., 2750700.,
      2763200., 2599825., 2612450., 2625075., 2637700., 2655250., 2667900.,
      2680550., 2693200., 2710875., 2723550., 2736225., 2748900., 2766700.,
      2779400., 2792100., 2804800., 3680625., 3698850., 3717075., 3735300.,
      3758450., 3776700., 3794950., 3813200., 3836475., 3854750., 3873025.,
      3891300., 3914700., 3933000., 3951300., 3969600., 3719225., 3737650.,
      3756075., 3774500., 3797850., 3816300., 3834750., 3853200., 3876675.,
      3895150., 3913625., 3932100., 3955700., 3974200., 3992700., 4011200.,
      3757825., 3776450., 3795075., 3813700., 3837250., 3855900., 3874550.,
      3893200., 3916875., 3935550., 3954225., 3972900., 3996700., 4015400.,
      4034100., 4052800., 4066625., 4086850., 4107075., 4127300., 4152450.,
      4172700., 4192950., 4213200., 4238475., 4258750., 4279025., 4299300.,
      4324700., 4345000., 4365300., 4385600., 4105225., 4125650., 4146075.,
      4166500., 4191850., 4212300., 4232750., 4253200., 4278675., 4299150.,
      4319625., 4340100., 4365700., 4386200., 4406700., 4427200., 4143825.,
      4164450., 4185075., 4205700., 4231250., 4251900., 4272550., 4293200.,
      4318875., 4339550., 4360225., 4380900., 4406700., 4427400., 4448100.,
      4468800.};
  const std::array<int, 4> in_shape = {{3, 8, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3008.,  5100.,  5720.,  3404.,  5890.,  9600.,  10250., 5920.,  8830.,
      14150., 14800., 8440.,  11770., 18700., 19350., 10960., 4914.,  7460.,
      7700.,  4122.,  16868., 26800., 27420., 15584., 20590., 32350., 33000.,
      18520., 23530., 36900., 37550., 21040., 26470., 41450., 42100., 23560.,
      10584., 15860., 16100., 8532.,  30728., 48500., 49120., 27764., 35290.,
      55100., 55750., 31120., 38230., 59650., 60300., 33640., 41170., 64200.,
      64850., 36160., 16254., 24260., 24500., 12942.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x7x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7325.,  7975.,  11875., 12525., 16425., 17075., 30075., 30725., 34625.,
      35275., 39175., 39825., 52825., 53475., 57375., 58025., 61925., 62575.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5866.,  6016.,  9930.,   10200.,  11130.,  11440.,  6610.,  6808.,
      11435., 11780., 18600.,  19200.,  19850.,  20500.,  11435., 11840.,
      17105., 17660., 27350.,  28300.,  28600.,  29600.,  16265., 16880.,
      22775., 23540., 36100.,  37400.,  37350.,  38700.,  21095., 21920.,
      9306.,  9828.,  14035.,  14920.,  14485.,  15400.,  7686.,  8244.,
      32746., 33736., 51930.,  53600.,  53130.,  54840.,  30130., 31168.,
      39785., 41180., 62350.,  64700.,  63600.,  66000.,  35585., 37040.,
      45455., 47060., 71100.,  73800.,  72350.,  75100.,  40415., 42080.,
      51125., 52940., 79850.,  82900.,  81100.,  84200.,  45245., 47120.,
      20016., 21168., 29785.,  31720.,  30235.,  32200.,  15876., 17064.,
      59626., 61456., 93930.,  97000.,  95130.,  98240.,  53650., 55528.,
      68135., 70580., 106100., 110200., 107350., 111500., 59735., 62240.,
      73805., 76460., 114850., 119300., 116100., 120600., 64565., 67280.,
      79475., 82340., 123600., 128400., 124850., 129700., 69395., 72320.,
      30726., 32508., 45535.,  48520.,  45985.,  49000.,  24066., 25884.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x7x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14225.,  14650.,  15475.,  15950.,  22975.,  23750.,  24225.,  25050.,
      31725.,  32850.,  32975.,  34150.,  57975.,  60150.,  59225.,  61450.,
      66725.,  69250.,  67975.,  70550.,  75475.,  78350.,  76725.,  79650.,
      101725., 105650., 102975., 106950., 110475., 114750., 111725., 116050.,
      119225., 123850., 120475., 125150.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11582.,  11732.,  11882.,  12032.,  19590.,  19860.,  20130.,  20400.,
      21950.,  22260.,  22570.,  22880.,  13022.,  13220.,  13418.,  13616.,
      22525.,  22870.,  23215.,  23560.,  36600.,  37200.,  37800.,  38400.,
      39050.,  39700.,  40350.,  41000.,  22465.,  22870.,  23275.,  23680.,
      33655.,  34210.,  34765.,  35320.,  53750.,  54700.,  55650.,  56600.,
      56200.,  57200.,  58200.,  59200.,  31915.,  32530.,  33145.,  33760.,
      44785.,  45550.,  46315.,  47080.,  70900.,  72200.,  73500.,  74800.,
      73350.,  74700.,  76050.,  77400.,  41365.,  42190.,  43015.,  43840.,
      18090.,  18612.,  19134.,  19656.,  27185.,  28070.,  28955.,  29840.,
      28055.,  28970.,  29885.,  30800.,  14814.,  15372.,  15930.,  16488.,
      64502.,  65492.,  66482.,  67472.,  102190., 103860., 105530., 107200.,
      104550., 106260., 107970., 109680., 59222.,  60260.,  61298.,  62336.,
      78175.,  79570.,  80965.,  82360.,  122350., 124700., 127050., 129400.,
      124800., 127200., 129600., 132000., 69715.,  71170.,  72625.,  74080.,
      89305.,  90910.,  92515.,  94120.,  139500., 142200., 144900., 147600.,
      141950., 144700., 147450., 150200., 79165.,  80830.,  82495.,  84160.,
      100435., 102250., 104065., 105880., 156650., 159700., 162750., 165800.,
      159100., 162200., 165300., 168400., 88615.,  90490.,  92365.,  94240.,
      38880.,  40032.,  41184.,  42336.,  57635.,  59570.,  61505.,  63440.,
      58505.,  60470.,  62435.,  64400.,  30564.,  31752.,  32940.,  34128.,
      117422., 119252., 121082., 122912., 184790., 187860., 190930., 194000.,
      187150., 190260., 193370., 196480., 105422., 107300., 109178., 111056.,
      133825., 136270., 138715., 141160., 208100., 212200., 216300., 220400.,
      210550., 214700., 218850., 223000., 116965., 119470., 121975., 124480.,
      144955., 147610., 150265., 152920., 225250., 229700., 234150., 238600.,
      227700., 232200., 236700., 241200., 126415., 129130., 131845., 134560.,
      156085., 158950., 161815., 164680., 242400., 247200., 252000., 256800.,
      244850., 249700., 254550., 259400., 135865., 138790., 141715., 144640.,
      59670.,  61452.,  63234.,  65016.,  88085.,  91070.,  94055.,  97040.,
      88955.,  91970.,  94985.,  98000.,  46314.,  48132.,  49950.,  51768.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x7x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28025.,  28450.,  28875.,  29300.,  30475.,  30950.,  31425.,  31900.,
      45175.,  45950.,  46725.,  47500.,  47625.,  48450.,  49275.,  50100.,
      62325.,  63450.,  64575.,  65700.,  64775.,  65950.,  67125.,  68300.,
      113775., 115950., 118125., 120300., 116225., 118450., 120675., 122900.,
      130925., 133450., 135975., 138500., 133375., 135950., 138525., 141100.,
      148075., 150950., 153825., 156700., 150525., 153450., 156375., 159300.,
      199525., 203450., 207375., 211300., 201975., 205950., 209925., 213900.,
      216675., 220950., 225225., 229500., 219125., 223450., 227775., 232100.,
      233825., 238450., 243075., 247700., 236275., 240950., 245625., 250300.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11348.,  12032.,  19260.,  20400.,  21660.,  22880.,  12884.,  13616.,
      22465.,  23560.,  36575.,  38400.,  39075.,  41000.,  22525.,  23680.,
      33805.,  35320.,  54075.,  56600.,  56575.,  59200.,  32185.,  33760.,
      45145.,  47080.,  71575.,  74800.,  74075.,  77400.,  41845.,  43840.,
      18459.,  19656.,  27845.,  29840.,  28745.,  30800.,  15255.,  16488.,
      65108.,  67472.,  103260., 107200., 105660., 109680., 59924.,  62336.,
      79165.,  82360.,  124075., 129400., 126575., 132000., 70825.,  74080.,
      90505.,  94120.,  141575., 147600., 144075., 150200., 80485.,  84160.,
      101845., 105880., 159075., 165800., 161575., 168400., 90145.,  94240.,
      39879.,  42336.,  59345.,  63440.,  60245.,  64400.,  31635.,  34128.,
      118868., 122912., 187260., 194000., 189660., 196480., 106964., 111056.,
      135865., 141160., 211575., 220400., 214075., 223000., 119125., 124480.,
      147205., 152920., 229075., 238600., 231575., 241200., 128785., 134560.,
      158545., 164680., 246575., 256800., 249075., 259400., 138445., 144640.,
      61299.,  65016.,  90845.,  97040.,  91745.,  98000.,  48015.,  51768.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x7x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      27825.,  29300.,  30325.,  31900.,  45325.,  47500.,  47825.,  50100.,
      62825.,  65700.,  65325.,  68300.,  115325., 120300., 117825., 122900.,
      132825., 138500., 135325., 141100., 150325., 156700., 152825., 159300.,
      202825., 211300., 205325., 213900., 220325., 229500., 222825., 232100.,
      237825., 247700., 240325., 250300.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      22408.,  22696.,  23764.,  24064.,  38000.,  38520.,  40260.,  40800.,
      42720.,  43320.,  45140.,  45760.,  25384.,  25768.,  26836.,  27232.,
      44255.,  44930.,  46430.,  47120.,  71975.,  73150.,  75600.,  76800.,
      76875.,  78150.,  80700.,  82000.,  44255.,  45050.,  46550.,  47360.,
      66515.,  67610.,  69530.,  70640.,  106275., 108150., 111300., 113200.,
      111175., 113150., 116400., 118400., 63155.,  64370.,  66290.,  67520.,
      88775.,  90290.,  92630.,  94160.,  140575., 143150., 147000., 149600.,
      145475., 148150., 152100., 154800., 82055.,  83690.,  86030.,  87680.,
      35883.,  36918.,  38268.,  39312.,  53935.,  55690.,  57910.,  59680.,
      55675.,  57490.,  59770.,  61600.,  29403.,  30510.,  31860.,  32976.,
      128248., 130216., 132964., 134944., 203200., 206520., 211060., 214400.,
      207920., 211320., 215940., 219360., 117784., 119848., 122596., 124672.,
      155555., 158330., 161930., 164720., 243475., 248150., 254100., 258800.,
      248375., 253150., 259200., 264000., 138755., 141650., 145250., 148160.,
      177815., 181010., 185030., 188240., 277775., 283150., 289800., 295200.,
      282675., 288150., 294900., 300400., 157655., 160970., 164990., 168320.,
      200075., 203690., 208130., 211760., 312075., 318150., 325500., 331600.,
      316975., 323150., 330600., 336800., 176555., 180290., 184730., 188480.,
      77463.,  79758.,  82368.,  84672.,  114835., 118690., 123010., 126880.,
      116575., 120490., 124870., 128800., 60903.,  63270.,  65880.,  68256.,
      234088., 237736., 242164., 245824., 368400., 374520., 381860., 388000.,
      373120., 379320., 386740., 392960., 210184., 213928., 218356., 222112.,
      266855., 271730., 277430., 282320., 414975., 423150., 432600., 440800.,
      419875., 428150., 437700., 446000., 233255., 238250., 243950., 248960.,
      289115., 294410., 300530., 305840., 449275., 458150., 468300., 477200.,
      454175., 463150., 473400., 482400., 252155., 257570., 263690., 269120.,
      311375., 317090., 323630., 329360., 483575., 493150., 504000., 513600.,
      488475., 498150., 509100., 518800., 271055., 276890., 283430., 289280.,
      119043., 122598., 126468., 130032., 175735., 181690., 188110., 194080.,
      177475., 183490., 189970., 196000., 92403.,  96030.,  99900.,  103536.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x7x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      54825.,  55650.,  57750.,  58600.,  59725.,  60650.,  62850.,  63800.,
      89125.,  90650.,  93450.,  95000.,  94025.,  95650.,  98550.,  100200.,
      123425., 125650., 129150., 131400., 128325., 130650., 134250., 136600.,
      226325., 230650., 236250., 240600., 231225., 235650., 241350., 245800.,
      260625., 265650., 271950., 277000., 265525., 270650., 277050., 282200.,
      294925., 300650., 307650., 313400., 299825., 305650., 312750., 318600.,
      397825., 405650., 414750., 422600., 402725., 410650., 419850., 427800.,
      432125., 440650., 450450., 459000., 437025., 445650., 455550., 464200.,
      466425., 475650., 486150., 495400., 471325., 480650., 491250., 500600.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      44528.,  44816.,  45104.,   45392.,   47228.,   47528.,   47828.,
      48128.,  75480.,  76000.,   76520.,   77040.,   79980.,   80520.,
      81060.,  81600.,  84840.,   85440.,   86040.,   86640.,   89660.,
      90280.,  90900.,  91520.,   50384.,   50768.,   51152.,   51536.,
      53276.,  53672.,  54068.,   54464.,   87835.,   88510.,   89185.,
      89860.,  92170.,  92860.,   93550.,   94240.,   142775.,  143950.,
      145125., 146300., 150000.,  151200.,  152400.,  153600.,  152475.,
      153750., 155025., 156300.,  160100.,  161400.,  162700.,  164000.,
      87715.,  88510.,  89305.,   90100.,   92290.,   93100.,   93910.,
      94720.,  131935., 133030.,  134125.,  135220.,  137950.,  139060.,
      140170., 141280., 210675.,  212550.,  214425.,  216300.,  220700.,
      222600., 224500., 226400.,  220375.,  222350.,  224325.,  226300.,
      230800., 232800., 234800.,  236800.,  125095.,  126310.,  127525.,
      128740., 131350., 132580.,  133810.,  135040.,  176035.,  177550.,
      179065., 180580., 183730.,  185260.,  186790.,  188320.,  278575.,
      281150., 283725., 286300.,  291400.,  294000.,  296600.,  299200.,
      288275., 290950., 293625.,  296300.,  301500.,  304200.,  306900.,
      309600., 162475., 164110.,  165745.,  167380.,  170410.,  172060.,
      173710., 175360., 70731.,   71766.,   72801.,   73836.,   75492.,
      76536.,  77580.,  78624.,   106115.,  107870.,  109625.,  111380.,
      114050., 115820., 117590.,  119360.,  109535.,  111350.,  113165.,
      114980., 117710., 119540.,  121370.,  123200.,  57699.,   58806.,
      59913.,  61020.,  62604.,   63720.,   64836.,   65952.,   254528.,
      256496., 258464., 260432.,  263948.,  265928.,  267908.,  269888.,
      403080., 406400., 409720.,  413040.,  418780.,  422120.,  425460.,
      428800., 412440., 415840.,  419240.,  422640.,  428460.,  431880.,
      435300., 438720., 233504.,  235568.,  237632.,  239696.,  243116.,
      245192., 247268., 249344.,  308335.,  311110.,  313885.,  316660.,
      321070., 323860., 326650.,  329440.,  482275.,  486950.,  491625.,
      496300., 503500., 508200.,  512900.,  517600.,  491975.,  496750.,
      501525., 506300., 513600.,  518400.,  523200.,  528000.,  274615.,
      277510., 280405., 283300.,  287590.,  290500.,  293410.,  296320.,
      352435., 355630., 358825.,  362020.,  366850.,  370060.,  373270.,
      376480., 550175., 555550.,  560925.,  566300.,  574200.,  579600.,
      585000., 590400., 559875.,  565350.,  570825.,  576300.,  584300.,
      589800., 595300., 600800.,  311995.,  315310.,  318625.,  321940.,
      326650., 329980., 333310.,  336640.,  396535.,  400150.,  403765.,
      407380., 412630., 416260.,  419890.,  423520.,  618075.,  624150.,
      630225., 636300., 644900.,  651000.,  657100.,  663200.,  627775.,
      633950., 640125., 646300.,  655000.,  661200.,  667400.,  673600.,
      349375., 353110., 356845.,  360580.,  365710.,  369460.,  373210.,
      376960., 152631., 154926.,  157221.,  159516.,  162432.,  164736.,
      167040., 169344., 225815.,  229670.,  233525.,  237380.,  242150.,
      246020., 249890., 253760.,  229235.,  233150.,  237065.,  240980.,
      245810., 249740., 253670.,  257600.,  119439.,  121806.,  124173.,
      126540., 129384., 131760.,  134136.,  136512.,  464528.,  468176.,
      471824., 475472., 480668.,  484328.,  487988.,  491648.,  730680.,
      736800., 742920., 749040.,  757580.,  763720.,  769860.,  776000.,
      740040., 746240., 752440.,  758640.,  767260.,  773480.,  779700.,
      785920., 416624., 420368.,  424112.,  427856.,  432956.,  436712.,
      440468., 444224., 528835.,  533710.,  538585.,  543460.,  549970.,
      554860., 559750., 564640.,  821775.,  829950.,  838125.,  846300.,
      857000., 865200., 873400.,  881600.,  831475.,  839750.,  848025.,
      856300., 867100., 875400.,  883700.,  892000.,  461515.,  466510.,
      471505., 476500., 482890.,  487900.,  492910.,  497920.,  572935.,
      578230., 583525., 588820.,  595750.,  601060.,  606370.,  611680.,
      889675., 898550., 907425.,  916300.,  927700.,  936600.,  945500.,
      954400., 899375., 908350.,  917325.,  926300.,  937800.,  946800.,
      955800., 964800., 498895.,  504310.,  509725.,  515140.,  521950.,
      527380., 532810., 538240.,  617035.,  622750.,  628465.,  634180.,
      641530., 647260., 652990.,  658720.,  957575.,  967150.,  976725.,
      986300., 998400., 1008000., 1017600., 1027200., 967275.,  976950.,
      986625., 996300., 1008500., 1018200., 1027900., 1037600., 536275.,
      542110., 547945., 553780.,  561010.,  566860.,  572710.,  578560.,
      234531., 238086., 241641.,  245196.,  249372.,  252936.,  256500.,
      260064., 345515., 351470.,  357425.,  363380.,  370250.,  376220.,
      382190., 388160., 348935.,  354950.,  360965.,  366980.,  373910.,
      379940., 385970., 392000.,  181179.,  184806.,  188433.,  192060.,
      196164., 199800., 203436.,  207072.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x7x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108825., 109650., 110475., 111300., 114650., 115500., 116350., 117200.,
      118525., 119450., 120375., 121300., 124750., 125700., 126650., 127600.,
      176725., 178250., 179775., 181300., 185350., 186900., 188450., 190000.,
      186425., 188050., 189675., 191300., 195450., 197100., 198750., 200400.,
      244625., 246850., 249075., 251300., 256050., 258300., 260550., 262800.,
      254325., 256650., 258975., 261300., 266150., 268500., 270850., 273200.,
      448325., 452650., 456975., 461300., 468150., 472500., 476850., 481200.,
      458025., 462450., 466875., 471300., 478250., 482700., 487150., 491600.,
      516225., 521250., 526275., 531300., 538850., 543900., 548950., 554000.,
      525925., 531050., 536175., 541300., 548950., 554100., 559250., 564400.,
      584125., 589850., 595575., 601300., 609550., 615300., 621050., 626800.,
      593825., 599650., 605475., 611300., 619650., 625500., 631350., 637200.,
      787825., 795650., 803475., 811300., 821650., 829500., 837350., 845200.,
      797525., 805450., 813375., 821300., 831750., 839700., 847650., 855600.,
      855725., 864250., 872775., 881300., 892350., 900900., 909450., 918000.,
      865425., 874050., 882675., 891300., 902450., 911100., 919750., 928400.,
      923625., 932850., 942075., 951300., 963050., 972300., 981550., 990800.,
      933325., 942650., 951975., 961300., 973150., 982500., 991850., 1001200.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      44060.,  45392.,   46748.,   48128.,  74820.,   77040.,   79300.,
      81600.,  84260.,   86640.,   89060.,  91520.,   50108.,   51536.,
      52988.,  54464.,   87715.,   89860.,  92035.,   94240.,   142725.,
      146300., 149925.,  153600.,  152525., 156300.,  160125.,  164000.,
      87835.,  90100.,   92395.,   94720.,  132235.,  135220.,  138235.,
      141280., 211325.,  216300.,  221325., 226400.,  221125.,  226300.,
      231525., 236800.,  125635.,  128740., 131875.,  135040.,  176755.,
      180580., 184435.,  188320.,  279925., 286300.,  292725.,  299200.,
      289725., 296300.,  302925.,  309600., 163435.,  167380.,  171355.,
      175360., 71469.,   73836.,   76221.,  78624.,   107435.,  111380.,
      115355., 119360.,  110915.,  114980., 119075.,  123200.,  58581.,
      61020.,  63477.,   65952.,   255740., 260432.,  265148.,  269888.,
      405220., 413040.,  420900.,  428800., 414660.,  422640.,  430660.,
      438720., 234908.,  239696.,  244508., 249344.,  310315.,  316660.,
      323035., 329440.,  485725.,  496300., 506925.,  517600.,  495525.,
      506300., 517125.,  528000.,  276835., 283300.,  289795.,  296320.,
      354835., 362020.,  369235.,  376480., 554325.,  566300.,  578325.,
      590400., 564125.,  576300.,  588525., 600800.,  314635.,  321940.,
      329275., 336640.,  399355.,  407380., 415435.,  423520.,  622925.,
      636300., 649725.,  663200.,  632725., 646300.,  659925.,  673600.,
      352435., 360580.,  368755.,  376960., 154629.,  159516.,  164421.,
      169344., 229235.,  237380.,  245555., 253760.,  232715.,  240980.,
      249275., 257600.,  121581.,  126540., 131517.,  136512.,  467420.,
      475472., 483548.,  491648.,  735620., 749040.,  762500.,  776000.,
      745060., 758640.,  772260.,  785920., 419708.,  427856.,  436028.,
      444224., 532915.,  543460.,  554035., 564640.,  828725.,  846300.,
      863925., 881600.,  838525.,  856300., 874125.,  892000.,  465835.,
      476500., 487195.,  497920.,  577435., 588820.,  600235.,  611680.,
      897325., 916300.,  935325.,  954400., 907125.,  926300.,  945525.,
      964800., 503635.,  515140.,  526675., 538240.,  621955.,  634180.,
      646435., 658720.,  965925.,  986300., 1006725., 1027200., 975725.,
      996300., 1016925., 1037600., 541435., 553780.,  566155.,  578560.,
      237789., 245196.,  252621.,  260064., 351035.,  363380.,  375755.,
      388160., 354515.,  366980.,  379475., 392000.,  184581.,  192060.,
      199557., 207072.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x7x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      108425., 111300., 114225., 117200., 118225., 121300., 124425., 127600.,
      177025., 181300., 185625., 190000., 186825., 191300., 195825., 200400.,
      245625., 251300., 257025., 262800., 255425., 261300., 267225., 273200.,
      451425., 461300., 471225., 481200., 461225., 471300., 481425., 491600.,
      520025., 531300., 542625., 554000., 529825., 541300., 552825., 564400.,
      588625., 601300., 614025., 626800., 598425., 611300., 624225., 637200.,
      794425., 811300., 828225., 845200., 804225., 821300., 838425., 855600.,
      863025., 881300., 899625., 918000., 872825., 891300., 909825., 928400.,
      931625., 951300., 971025., 990800., 941425., 961300., 981225., 1001200.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      87556.,   88120.,   90208.,   90784.,   92908.,   93496.,   95656.,
      96256.,   148620.,  149640.,  153040.,  154080.,  157540.,  158600.,
      162120.,  163200.,  167340.,  168520.,  172080.,  173280.,  176900.,
      178120.,  181800.,  183040.,  99460.,   100216.,  102304.,  103072.,
      105196.,  105976.,  108136.,  108928.,  174095.,  175430.,  178370.,
      179720.,  182705.,  184070.,  187100.,  188480.,  283125.,  285450.,
      290250.,  292600.,  297475.,  299850.,  304800.,  307200.,  302525.,
      305050.,  310050.,  312600.,  317675.,  320250.,  325400.,  328000.,
      174095.,  175670.,  178610.,  180200.,  183185.,  184790.,  187820.,
      189440.,  262295.,  264470.,  268250.,  270440.,  274265.,  276470.,
      280340.,  282560.,  418925.,  422650.,  428850.,  432600.,  438875.,
      442650.,  449000.,  452800.,  438325.,  442250.,  448650.,  452600.,
      459075.,  463050.,  469600.,  473600.,  248855.,  251270.,  255050.,
      257480.,  261305.,  263750.,  267620.,  270080.,  350495.,  353510.,
      358130.,  361160.,  365825.,  368870.,  373580.,  376640.,  554725.,
      559850.,  567450.,  572600.,  580275.,  585450.,  593200.,  598400.,
      574125.,  579450.,  587250.,  592600.,  600475.,  605850.,  613800.,
      619200.,  323615.,  326870.,  331490.,  334760.,  339425.,  342710.,
      347420.,  350720.,  140877.,  142938.,  145602.,  147672.,  150363.,
      152442.,  155160.,  157248.,  211375.,  214870.,  219250.,  222760.,
      227185.,  230710.,  235180.,  238720.,  218215.,  221830.,  226330.,
      229960.,  234505.,  238150.,  242740.,  246400.,  114957.,  117162.,
      119826.,  122040.,  124731.,  126954.,  129672.,  131904.,  507556.,
      511480.,  516928.,  520864.,  526348.,  530296.,  535816.,  539776.,
      803820.,  810440.,  819440.,  826080.,  835140.,  841800.,  850920.,
      857600.,  822540.,  829320.,  838480.,  845280.,  854500.,  861320.,
      870600.,  877440.,  465700.,  469816.,  475264.,  479392.,  484876.,
      489016.,  494536.,  498688.,  615095.,  620630.,  627770.,  633320.,
      640505.,  646070.,  653300.,  658880.,  962125.,  971450.,  983250.,
      992600.,  1004475., 1013850., 1025800., 1035200., 981525.,  991050.,
      1003050., 1012600., 1024675., 1034250., 1046400., 1056000., 547895.,
      553670.,  560810.,  566600.,  573785.,  579590.,  586820.,  592640.,
      703295.,  709670.,  717650.,  724040.,  732065.,  738470.,  746540.,
      752960.,  1097925., 1108650., 1121850., 1132600., 1145875., 1156650.,
      1170000., 1180800., 1117325., 1128250., 1141650., 1152600., 1166075.,
      1177050., 1190600., 1201600., 622655.,  629270.,  637250.,  643880.,
      651905.,  658550.,  666620.,  673280.,  791495.,  798710.,  807530.,
      814760.,  823625.,  830870.,  839780.,  847040.,  1233725., 1245850.,
      1260450., 1272600., 1287275., 1299450., 1314200., 1326400., 1253125.,
      1265450., 1280250., 1292600., 1307475., 1319850., 1334800., 1347200.,
      697415.,  704870.,  713690.,  721160.,  730025.,  737510.,  746420.,
      753920.,  304677.,  309258.,  314442.,  319032.,  324243.,  328842.,
      334080.,  338688.,  450775.,  458470.,  467050.,  474760.,  483385.,
      491110.,  499780.,  507520.,  457615.,  465430.,  474130.,  481960.,
      490705.,  498550.,  507340.,  515200.,  238437.,  243162.,  248346.,
      253080.,  258291.,  263034.,  268272.,  273024.,  927556.,  934840.,
      943648.,  950944.,  959788.,  967096.,  975976.,  983296.,  1459020.,
      1471240., 1485840., 1498080., 1512740., 1525000., 1539720., 1552000.,
      1477740., 1490120., 1504880., 1517280., 1532100., 1544520., 1559400.,
      1571840., 831940.,  839416.,  848224.,  855712.,  864556.,  872056.,
      880936.,  888448.,  1056095., 1065830., 1077170., 1086920., 1098305.,
      1108070., 1119500., 1129280., 1641125., 1657450., 1676250., 1692600.,
      1711475., 1727850., 1746800., 1763200., 1660525., 1677050., 1696050.,
      1712600., 1731675., 1748250., 1767400., 1784000., 921695.,  931670.,
      943010.,  953000.,  964385.,  974390.,  985820.,  995840.,  1144295.,
      1154870., 1167050., 1177640., 1189865., 1200470., 1212740., 1223360.,
      1776925., 1794650., 1814850., 1832600., 1852875., 1870650., 1891000.,
      1908800., 1796325., 1814250., 1834650., 1852600., 1873075., 1891050.,
      1911600., 1929600., 996455.,  1007270., 1019450., 1030280., 1042505.,
      1053350., 1065620., 1076480., 1232495., 1243910., 1256930., 1268360.,
      1281425., 1292870., 1305980., 1317440., 1912725., 1931850., 1953450.,
      1972600., 1994275., 2013450., 2035200., 2054400., 1932125., 1951450.,
      1973250., 1992600., 2014475., 2033850., 2055800., 2075200., 1071215.,
      1082870., 1095890., 1107560., 1120625., 1132310., 1145420., 1157120.,
      468477.,  475578.,  483282.,  490392.,  498123.,  505242.,  513000.,
      520128.,  690175.,  702070.,  714850.,  726760.,  739585.,  751510.,
      764380.,  776320.,  697015.,  709030.,  721930.,  733960.,  746905.,
      758950.,  771940.,  784000.,  361917.,  369162.,  376866.,  384120.,
      391851.,  399114.,  406872.,  414144.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x7x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      215225.,  216850.,  220950.,  222600.,  226775.,  228450.,  232700.,
      234400.,  234625.,  236450.,  240750.,  242600.,  246975.,  248850.,
      253300.,  255200.,  351025.,  354050.,  359550.,  362600.,  368175.,
      371250.,  376900.,  380000.,  370425.,  373650.,  379350.,  382600.,
      388375.,  391650.,  397500.,  400800.,  486825.,  491250.,  498150.,
      502600.,  509575.,  514050.,  521100.,  525600.,  506225.,  510850.,
      517950.,  522600.,  529775.,  534450.,  541700.,  546400.,  894225.,
      902850.,  913950.,  922600.,  933775.,  942450.,  953700.,  962400.,
      913625.,  922450.,  933750.,  942600.,  953975.,  962850.,  974300.,
      983200.,  1030025., 1040050., 1052550., 1062600., 1075175., 1085250.,
      1097900., 1108000., 1049425., 1059650., 1072350., 1082600., 1095375.,
      1105650., 1118500., 1128800., 1165825., 1177250., 1191150., 1202600.,
      1216575., 1228050., 1242100., 1253600., 1185225., 1196850., 1210950.,
      1222600., 1236775., 1248450., 1262700., 1274400., 1573225., 1588850.,
      1606950., 1622600., 1640775., 1656450., 1674700., 1690400., 1592625.,
      1608450., 1626750., 1642600., 1660975., 1676850., 1695300., 1711200.,
      1709025., 1726050., 1745550., 1762600., 1782175., 1799250., 1818900.,
      1836000., 1728425., 1745650., 1765350., 1782600., 1802375., 1819650.,
      1839500., 1856800., 1844825., 1863250., 1884150., 1902600., 1923575.,
      1942050., 1963100., 1981600., 1864225., 1882850., 1903950., 1922600.,
      1943775., 1962450., 1983700., 2002400.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      174548.,  175112.,  175676.,  176240.,  179840.,  180416.,  180992.,
      181568.,  185228.,  185816.,  186404.,  186992.,  190712.,  191312.,
      191912.,  192512.,  296220.,  297240.,  298260.,  299280.,  305040.,
      306080.,  307120.,  308160.,  314020.,  315080.,  316140.,  317200.,
      323160.,  324240.,  325320.,  326400.,  333500.,  334680.,  335860.,
      337040.,  342960.,  344160.,  345360.,  346560.,  352580.,  353800.,
      355020.,  356240.,  362360.,  363600.,  364840.,  366080.,  198164.,
      198920.,  199676.,  200432.,  203840.,  204608.,  205376.,  206144.,
      209612.,  210392.,  211172.,  211952.,  215480.,  216272.,  217064.,
      217856.,  346855.,  348190.,  349525.,  350860.,  355390.,  356740.,
      358090.,  359440.,  364045.,  365410.,  366775.,  368140.,  372820.,
      374200.,  375580.,  376960.,  563925.,  566250.,  568575.,  570900.,
      578150.,  580500.,  582850.,  585200.,  592575.,  594950.,  597325.,
      599700.,  607200.,  609600.,  612000.,  614400.,  602525.,  605050.,
      607575.,  610100.,  617550.,  620100.,  622650.,  625200.,  632775.,
      635350.,  637925.,  640500.,  648200.,  650800.,  653400.,  656000.,
      346615.,  348190.,  349765.,  351340.,  355630.,  357220.,  358810.,
      360400.,  364765.,  366370.,  367975.,  369580.,  374020.,  375640.,
      377260.,  378880.,  522415.,  524590.,  526765.,  528940.,  534310.,
      536500.,  538690.,  540880.,  546325.,  548530.,  550735.,  552940.,
      558460.,  560680.,  562900.,  565120.,  834125.,  837850.,  841575.,
      845300.,  853950.,  857700.,  861450.,  865200.,  873975.,  877750.,
      881525.,  885300.,  894200.,  898000.,  901800.,  905600.,  872725.,
      876650.,  880575.,  884500.,  893350.,  897300.,  901250.,  905200.,
      914175.,  918150.,  922125.,  926100.,  935200.,  939200.,  943200.,
      947200.,  495295.,  497710.,  500125.,  502540.,  507670.,  510100.,
      512530.,  514960.,  520165.,  522610.,  525055.,  527500.,  532780.,
      535240.,  537700.,  540160.,  697975.,  700990.,  704005.,  707020.,
      713230.,  716260.,  719290.,  722320.,  728605.,  731650.,  734695.,
      737740.,  744100.,  747160.,  750220.,  753280.,  1104325., 1109450.,
      1114575., 1119700., 1129750., 1134900., 1140050., 1145200., 1155375.,
      1160550., 1165725., 1170900., 1181200., 1186400., 1191600., 1196800.,
      1142925., 1148250., 1153575., 1158900., 1169150., 1174500., 1179850.,
      1185200., 1195575., 1200950., 1206325., 1211700., 1222200., 1227600.,
      1233000., 1238400., 643975.,  647230.,  650485.,  653740.,  659710.,
      662980.,  666250.,  669520.,  675565.,  678850.,  682135.,  685420.,
      691540.,  694840.,  698140.,  701440.,  279693.,  281754.,  283815.,
      285876.,  289134.,  291204.,  293274.,  295344.,  298647.,  300726.,
      302805.,  304884.,  308232.,  310320.,  312408.,  314496.,  419255.,
      422750.,  426245.,  429740.,  434990.,  438500.,  442010.,  445520.,
      450845.,  454370.,  457895.,  461420.,  466820.,  470360.,  473900.,
      477440.,  432815.,  436430.,  440045.,  443660.,  449030.,  452660.,
      456290.,  459920.,  465365.,  469010.,  472655.,  476300.,  481820.,
      485480.,  489140.,  492800.,  227709.,  229914.,  232119.,  234324.,
      237438.,  239652.,  241866.,  244080.,  247239.,  249462.,  251685.,
      253908.,  257112.,  259344.,  261576.,  263808.,  1011188., 1015112.,
      1019036., 1022960., 1029920., 1033856., 1037792., 1041728., 1048748.,
      1052696., 1056644., 1060592., 1067672., 1071632., 1075592., 1079552.,
      1601020., 1607640., 1614260., 1620880., 1632240., 1638880., 1645520.,
      1652160., 1663620., 1670280., 1676940., 1683600., 1695160., 1701840.,
      1708520., 1715200., 1638300., 1645080., 1651860., 1658640., 1670160.,
      1676960., 1683760., 1690560., 1702180., 1709000., 1715820., 1722640.,
      1734360., 1741200., 1748040., 1754880., 927284.,  931400.,  935516.,
      939632.,  946400.,  950528.,  954656.,  958784.,  965612.,  969752.,
      973892.,  978032.,  984920.,  989072.,  993224.,  997376.,  1224655.,
      1230190., 1235725., 1241260., 1249990., 1255540., 1261090., 1266640.,
      1275445., 1281010., 1286575., 1292140., 1301020., 1306600., 1312180.,
      1317760., 1914925., 1924250., 1933575., 1942900., 1957150., 1966500.,
      1975850., 1985200., 1999575., 2008950., 2018325., 2027700., 2042200.,
      2051600., 2061000., 2070400., 1953525., 1963050., 1972575., 1982100.,
      1996550., 2006100., 2015650., 2025200., 2039775., 2049350., 2058925.,
      2068500., 2083200., 2092800., 2102400., 2112000., 1090015., 1095790.,
      1101565., 1107340., 1115830., 1121620., 1127410., 1133200., 1141765.,
      1147570., 1153375., 1159180., 1167820., 1173640., 1179460., 1185280.,
      1400215., 1406590., 1412965., 1419340., 1428910., 1435300., 1441690.,
      1448080., 1457725., 1464130., 1470535., 1476940., 1486660., 1493080.,
      1499500., 1505920., 2185125., 2195850., 2206575., 2217300., 2232950.,
      2243700., 2254450., 2265200., 2280975., 2291750., 2302525., 2313300.,
      2329200., 2340000., 2350800., 2361600., 2223725., 2234650., 2245575.,
      2256500., 2272350., 2283300., 2294250., 2305200., 2321175., 2332150.,
      2343125., 2354100., 2370200., 2381200., 2392200., 2403200., 1238695.,
      1245310., 1251925., 1258540., 1267870., 1274500., 1281130., 1287760.,
      1297165., 1303810., 1310455., 1317100., 1326580., 1333240., 1339900.,
      1346560., 1575775., 1582990., 1590205., 1597420., 1607830., 1615060.,
      1622290., 1629520., 1640005., 1647250., 1654495., 1661740., 1672300.,
      1679560., 1686820., 1694080., 2455325., 2467450., 2479575., 2491700.,
      2508750., 2520900., 2533050., 2545200., 2562375., 2574550., 2586725.,
      2598900., 2616200., 2628400., 2640600., 2652800., 2493925., 2506250.,
      2518575., 2530900., 2548150., 2560500., 2572850., 2585200., 2602575.,
      2614950., 2627325., 2639700., 2657200., 2669600., 2682000., 2694400.,
      1387375., 1394830., 1402285., 1409740., 1419910., 1427380., 1434850.,
      1442320., 1452565., 1460050., 1467535., 1475020., 1485340., 1492840.,
      1500340., 1507840., 604773.,  609354.,  613935.,  618516.,  624294.,
      628884.,  633474.,  638064.,  643887.,  648486.,  653085.,  657684.,
      663552.,  668160.,  672768.,  677376.,  893855.,  901550.,  909245.,
      916940.,  926390.,  934100.,  941810.,  949520.,  959045.,  966770.,
      974495.,  982220.,  991820.,  999560.,  1007300., 1015040., 907415.,
      915230.,  923045.,  930860.,  940430.,  948260.,  956090.,  963920.,
      973565.,  981410.,  989255.,  997100.,  1006820., 1014680., 1022540.,
      1030400., 472149.,  476874.,  481599.,  486324.,  491958.,  496692.,
      501426.,  506160.,  511839.,  516582.,  521325.,  526068.,  531792.,
      536544.,  541296.,  546048.,  1847828., 1855112., 1862396., 1869680.,
      1880000., 1887296., 1894592., 1901888., 1912268., 1919576., 1926884.,
      1934192., 1944632., 1951952., 1959272., 1966592., 2905820., 2918040.,
      2930260., 2942480., 2959440., 2971680., 2983920., 2996160., 3013220.,
      3025480., 3037740., 3050000., 3067160., 3079440., 3091720., 3104000.,
      2943100., 2955480., 2967860., 2980240., 2997360., 3009760., 3022160.,
      3034560., 3051780., 3064200., 3076620., 3089040., 3106360., 3118800.,
      3131240., 3143680., 1656404., 1663880., 1671356., 1678832., 1688960.,
      1696448., 1703936., 1711424., 1721612., 1729112., 1736612., 1744112.,
      1754360., 1761872., 1769384., 1776896., 2102455., 2112190., 2121925.,
      2131660., 2144590., 2154340., 2164090., 2173840., 2186845., 2196610.,
      2206375., 2216140., 2229220., 2239000., 2248780., 2258560., 3265925.,
      3282250., 3298575., 3314900., 3336150., 3352500., 3368850., 3385200.,
      3406575., 3422950., 3439325., 3455700., 3477200., 3493600., 3510000.,
      3526400., 3304525., 3321050., 3337575., 3354100., 3375550., 3392100.,
      3408650., 3425200., 3446775., 3463350., 3479925., 3496500., 3518200.,
      3534800., 3551400., 3568000., 1833415., 1843390., 1853365., 1863340.,
      1876030., 1886020., 1896010., 1906000., 1918765., 1928770., 1938775.,
      1948780., 1961620., 1971640., 1981660., 1991680., 2278015., 2288590.,
      2299165., 2309740., 2323510., 2334100., 2344690., 2355280., 2369125.,
      2379730., 2390335., 2400940., 2414860., 2425480., 2436100., 2446720.,
      3536125., 3553850., 3571575., 3589300., 3611950., 3629700., 3647450.,
      3665200., 3687975., 3705750., 3723525., 3741300., 3764200., 3782000.,
      3799800., 3817600., 3574725., 3592650., 3610575., 3628500., 3651350.,
      3669300., 3687250., 3705200., 3728175., 3746150., 3764125., 3782100.,
      3805200., 3823200., 3841200., 3859200., 1982095., 1992910., 2003725.,
      2014540., 2028070., 2038900., 2049730., 2060560., 2074165., 2085010.,
      2095855., 2106700., 2120380., 2131240., 2142100., 2152960., 2453575.,
      2464990., 2476405., 2487820., 2502430., 2513860., 2525290., 2536720.,
      2551405., 2562850., 2574295., 2585740., 2600500., 2611960., 2623420.,
      2634880., 3806325., 3825450., 3844575., 3863700., 3887750., 3906900.,
      3926050., 3945200., 3969375., 3988550., 4007725., 4026900., 4051200.,
      4070400., 4089600., 4108800., 3844925., 3864250., 3883575., 3902900.,
      3927150., 3946500., 3965850., 3985200., 4009575., 4028950., 4048325.,
      4067700., 4092200., 4111600., 4131000., 4150400., 2130775., 2142430.,
      2154085., 2165740., 2180110., 2191780., 2203450., 2215120., 2229565.,
      2241250., 2252935., 2264620., 2279140., 2290840., 2302540., 2314240.,
      929853.,  936954.,  944055.,  951156.,  959454.,  966564.,  973674.,
      980784.,  989127.,  996246.,  1003365., 1010484., 1018872., 1026000.,
      1033128., 1040256., 1368455., 1380350., 1392245., 1404140., 1417790.,
      1429700., 1441610., 1453520., 1467245., 1479170., 1491095., 1503020.,
      1516820., 1528760., 1540700., 1552640., 1382015., 1394030., 1406045.,
      1418060., 1431830., 1443860., 1455890., 1467920., 1481765., 1493810.,
      1505855., 1517900., 1531820., 1543880., 1555940., 1568000., 716589.,
      723834.,  731079.,  738324.,  746478.,  753732.,  760986.,  768240.,
      776439.,  783702.,  790965.,  798228.,  806472.,  813744.,  821016.,
      828288.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x7x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      428825.,  430450.,  432075.,  433700.,  440250.,  441900.,  443550.,
      445200.,  451875.,  453550.,  455225.,  456900.,  463700.,  465400.,
      467100.,  468800.,  467425.,  469250.,  471075.,  472900.,  479650.,
      481500.,  483350.,  485200.,  492075.,  493950.,  495825.,  497700.,
      504700.,  506600.,  508500.,  510400.,  699025.,  702050.,  705075.,
      708100.,  716050.,  719100.,  722150.,  725200.,  733275.,  736350.,
      739425.,  742500.,  750700.,  753800.,  756900.,  760000.,  737625.,
      740850.,  744075.,  747300.,  755450.,  758700.,  761950.,  765200.,
      773475.,  776750.,  780025.,  783300.,  791700.,  795000.,  798300.,
      801600.,  969225.,  973650.,  978075.,  982500.,  991850.,  996300.,
      1000750., 1005200., 1014675., 1019150., 1023625., 1028100., 1037700.,
      1042200., 1046700., 1051200., 1007825., 1012450., 1017075., 1021700.,
      1031250., 1035900., 1040550., 1045200., 1054875., 1059550., 1064225.,
      1068900., 1078700., 1083400., 1088100., 1092800., 1779825., 1788450.,
      1797075., 1805700., 1819250., 1827900., 1836550., 1845200., 1858875.,
      1867550., 1876225., 1884900., 1898700., 1907400., 1916100., 1924800.,
      1818425., 1827250., 1836075., 1844900., 1858650., 1867500., 1876350.,
      1885200., 1899075., 1907950., 1916825., 1925700., 1939700., 1948600.,
      1957500., 1966400., 2050025., 2060050., 2070075., 2080100., 2095050.,
      2105100., 2115150., 2125200., 2140275., 2150350., 2160425., 2170500.,
      2185700., 2195800., 2205900., 2216000., 2088625., 2098850., 2109075.,
      2119300., 2134450., 2144700., 2154950., 2165200., 2180475., 2190750.,
      2201025., 2211300., 2226700., 2237000., 2247300., 2257600., 2320225.,
      2331650., 2343075., 2354500., 2370850., 2382300., 2393750., 2405200.,
      2421675., 2433150., 2444625., 2456100., 2472700., 2484200., 2495700.,
      2507200., 2358825., 2370450., 2382075., 2393700., 2410250., 2421900.,
      2433550., 2445200., 2461875., 2473550., 2485225., 2496900., 2513700.,
      2525400., 2537100., 2548800., 3130825., 3146450., 3162075., 3177700.,
      3198250., 3213900., 3229550., 3245200., 3265875., 3281550., 3297225.,
      3312900., 3333700., 3349400., 3365100., 3380800., 3169425., 3185250.,
      3201075., 3216900., 3237650., 3253500., 3269350., 3285200., 3306075.,
      3321950., 3337825., 3353700., 3374700., 3390600., 3406500., 3422400.,
      3401025., 3418050., 3435075., 3452100., 3474050., 3491100., 3508150.,
      3525200., 3547275., 3564350., 3581425., 3598500., 3620700., 3637800.,
      3654900., 3672000., 3439625., 3456850., 3474075., 3491300., 3513450.,
      3530700., 3547950., 3565200., 3587475., 3604750., 3622025., 3639300.,
      3661700., 3679000., 3696300., 3713600., 3671225., 3689650., 3708075.,
      3726500., 3749850., 3768300., 3786750., 3805200., 3828675., 3847150.,
      3865625., 3884100., 3907700., 3926200., 3944700., 3963200., 3709825.,
      3728450., 3747075., 3765700., 3789250., 3807900., 3826550., 3845200.,
      3868875., 3887550., 3906225., 3924900., 3948700., 3967400., 3986100.,
      4004800.};
  const std::array<int, 4> in_shape = {{3, 10, 7, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4532.,  6000.,  6620.,  3914.,  8780.,  11150., 11800., 6790.,  13100.,
      16350., 17000., 9670.,  17420., 21550., 22200., 12550., 7118.,  8590.,
      8830.,  4719.,  25012., 30800., 31420., 17834., 30380., 37150., 37800.,
      21190., 34700., 42350., 43000., 24070., 39020., 47550., 48200., 26950.,
      15278., 18190., 18430., 9759.,  45492., 55600., 56220., 31754., 51980.,
      63150., 63800., 35590., 56300., 68350., 69000., 38470., 60620., 73550.,
      74200., 41350., 23438., 27790., 28030., 14799.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8225.,  8875.,  13425., 14075., 18625., 19275., 34225., 34875., 39425.,
      40075., 44625., 45275., 60225., 60875., 65425., 66075., 70625., 71275.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8832.,   9064.,   11680.,  12000.,  12880.,  13240.,  7600.,  7828.,
      17030.,  17560.,  21600.,  22300.,  22850.,  23600.,  13115., 13580.,
      25350.,  26200.,  31600.,  32700.,  32850.,  34000.,  18635., 19340.,
      33670.,  34840.,  41600.,  43100.,  42850.,  44400.,  24155., 25100.,
      13438.,  14236.,  16160.,  17180.,  16610.,  17660.,  8799.,  9438.,
      48512.,  50024.,  59680.,  61600.,  60880.,  62840.,  34480., 35668.,
      58630.,  60760.,  71600.,  74300.,  72850.,  75600.,  40715., 42380.,
      66950.,  69400.,  81600.,  84700.,  82850.,  86000.,  46235., 48140.,
      75270.,  78040.,  91600.,  95100.,  92850.,  96400.,  51755., 53900.,
      28798.,  30556.,  34160.,  36380.,  34610.,  36860.,  18159., 19518.,
      88192.,  90984.,  107680., 111200., 108880., 112440., 61360., 63508.,
      100230., 103960., 121600., 126300., 122850., 127600., 68315., 71180.,
      108550., 112600., 131600., 136700., 132850., 138000., 73835., 76940.,
      116870., 121240., 141600., 147100., 142850., 148400., 79355., 82700.,
      44158.,  46876.,  52160.,  55580.,  52610.,  56060.,  27519., 29598.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15975.,  16450.,  17225.,  17750.,  25975.,  26850.,  27225.,  28150.,
      35975.,  37250.,  37225.,  38550.,  65975.,  68450.,  67225.,  69750.,
      75975.,  78850.,  77225.,  80150.,  85975.,  89250.,  87225.,  90550.,
      115975., 120450., 117225., 121750., 125975., 130850., 127225., 132150.,
      135975., 141250., 137225., 142550.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17432.,  17664.,  17896.,  18128.,  23040.,  23360.,  23680.,  24000.,
      25400.,  25760.,  26120.,  26480.,  14972.,  15200.,  15428.,  15656.,
      33530.,  34060.,  34590.,  35120.,  42500.,  43200.,  43900.,  44600.,
      44950.,  45700.,  46450.,  47200.,  25765.,  26230.,  26695.,  27160.,
      49850.,  50700.,  51550.,  52400.,  62100.,  63200.,  64300.,  65400.,
      64550.,  65700.,  66850.,  68000.,  36565.,  37270.,  37975.,  38680.,
      66170.,  67340.,  68510.,  69680.,  81700.,  83200.,  84700.,  86200.,
      84150.,  85700.,  87250.,  88800.,  47365.,  48310.,  49255.,  50200.,
      26078.,  26876.,  27674.,  28472.,  31300.,  32320.,  33340.,  34360.,
      32170.,  33220.,  34270.,  35320.,  16959.,  17598.,  18237.,  18876.,
      95512.,  97024.,  98536.,  100048., 117440., 119360., 121280., 123200.,
      119800., 121760., 123720., 125680., 67772.,  68960.,  70148.,  71336.,
      115130., 117260., 119390., 121520., 140500., 143200., 145900., 148600.,
      142950., 145700., 148450., 151200., 79765.,  81430.,  83095.,  84760.,
      131450., 133900., 136350., 138800., 160100., 163200., 166300., 169400.,
      162550., 165700., 168850., 172000., 90565.,  92470.,  94375.,  96280.,
      147770., 150540., 153310., 156080., 179700., 183200., 186700., 190200.,
      182150., 185700., 189250., 192800., 101365., 103510., 105655., 107800.,
      55838.,  57596.,  59354.,  61112.,  66100.,  68320.,  70540.,  72760.,
      66970.,  69220.,  71470.,  73720.,  34959.,  36318.,  37677.,  39036.,
      173592., 176384., 179176., 181968., 211840., 215360., 218880., 222400.,
      214200., 217760., 221320., 224880., 120572., 122720., 124868., 127016.,
      196730., 200460., 204190., 207920., 238500., 243200., 247900., 252600.,
      240950., 245700., 250450., 255200., 133765., 136630., 139495., 142360.,
      213050., 217100., 221150., 225200., 258100., 263200., 268300., 273400.,
      260550., 265700., 270850., 276000., 144565., 147670., 150775., 153880.,
      229370., 233740., 238110., 242480., 277700., 283200., 288700., 294200.,
      280150., 285700., 291250., 296800., 155365., 158710., 162055., 165400.,
      85598.,  88316.,  91034.,  93752.,  100900., 104320., 107740., 111160.,
      101770., 105220., 108670., 112120., 52959.,  55038.,  57117.,  59196.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31475.,  31950.,  32425.,  32900.,  33925.,  34450.,  34975.,  35500.,
      51075.,  51950.,  52825.,  53700.,  53525.,  54450.,  55375.,  56300.,
      70675.,  71950.,  73225.,  74500.,  73125.,  74450.,  75775.,  77100.,
      129475., 131950., 134425., 136900., 131925., 134450., 136975., 139500.,
      149075., 151950., 154825., 157700., 151525., 154450., 157375., 160300.,
      168675., 171950., 175225., 178500., 171125., 174450., 177775., 181100.,
      227475., 231950., 236425., 240900., 229925., 234450., 238975., 243500.,
      247075., 251950., 256825., 261700., 249525., 254450., 259375., 264300.,
      266675., 271950., 277225., 282500., 269125., 274450., 279775., 285100.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17168.,  18128.,  22760.,  24000.,  25160.,  26480.,  14864.,  15656.,
      33540.,  35120.,  42575.,  44600.,  45075.,  47200.,  25885.,  27160.,
      50180.,  52400.,  62575.,  65400.,  65075.,  68000.,  36925.,  38680.,
      66820.,  69680.,  82575.,  86200.,  85075.,  88800.,  47965.,  50200.,
      26684.,  28472.,  32095.,  34360.,  32995.,  35320.,  17481.,  18876.,
      96528.,  100048., 118760., 123200., 121160., 125680., 68624.,  71336.,
      116740., 121520., 142575., 148600., 145075., 151200., 81085.,  84760.,
      133380., 138800., 162575., 169400., 165075., 172000., 92125.,  96280.,
      150020., 156080., 182575., 190200., 185075., 192800., 103165., 107800.,
      57404.,  61112.,  68095.,  72760.,  68995.,  73720.,  36201.,  39036.,
      175888., 181968., 214760., 222400., 217160., 224880., 122384., 127016.,
      199940., 207920., 242575., 252600., 245075., 255200., 136285., 142360.,
      216580., 225200., 262575., 273400., 265075., 276000., 147325., 153880.,
      233220., 242480., 282575., 294200., 285075., 296800., 158365., 165400.,
      88124.,  93752.,  104095., 111160., 104995., 112120., 54921.,  59196.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31325.,  32900.,  33825.,  35500.,  51325.,  53700.,  53825.,  56300.,
      71325.,  74500.,  73825.,  77100.,  131325., 136900., 133825., 139500.,
      151325., 157700., 153825., 160300., 171325., 178500., 173825., 181100.,
      231325., 240900., 233825., 243500., 251325., 261700., 253825., 264300.,
      271325., 282500., 273825., 285100.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33888.,  34336.,  35792.,  36256.,  44900.,  45520.,  47360.,  48000.,
      49620.,  50320.,  52240.,  52960.,  29284.,  29728.,  30856.,  31312.,
      66040.,  67080.,  69180.,  70240.,  83775.,  85150.,  87800.,  89200.,
      88675.,  90150.,  92900.,  94400.,  50855.,  51770.,  53390.,  54320.,
      98680.,  100360., 103100., 104800., 122975., 125150., 128600., 130800.,
      127875., 130150., 133700., 136000., 72455.,  73850.,  75950.,  77360.,
      131320., 133640., 137020., 139360., 162175., 165150., 169400., 172400.,
      167075., 170150., 174500., 177600., 94055.,  95930.,  98510.,  100400.,
      51784.,  53368.,  55348.,  56944.,  62165.,  64190.,  66680.,  68720.,
      63905.,  65990.,  68540.,  70640.,  33693.,  34962.,  36474.,  37752.,
      190048., 193056., 197072., 200096., 233700., 237520., 242560., 246400.,
      238420., 242320., 247440., 251360., 134884., 137248., 140296., 142672.,
      229240., 233480., 238780., 243040., 279775., 285150., 291800., 297200.,
      284675., 290150., 296900., 302400., 158855., 162170., 166190., 169520.,
      261880., 266760., 272700., 277600., 318975., 325150., 332600., 338800.,
      323875., 330150., 337700., 344000., 180455., 184250., 188750., 192560.,
      294520., 300040., 306620., 312160., 358175., 365150., 373400., 380400.,
      363075., 370150., 378500., 385600., 202055., 206330., 211310., 215600.,
      111304., 114808., 118708., 122224., 131765., 136190., 141080., 145520.,
      133505., 137990., 142940., 147440., 69693.,  72402.,  75354.,  78072.,
      346208., 351776., 358352., 363936., 422500., 429520., 437760., 444800.,
      427220., 434320., 442640., 449760., 240484., 244768., 249736., 254032.,
      392440., 399880., 408380., 415840., 475775., 485150., 495800., 505200.,
      480675., 490150., 500900., 510400., 266855., 272570., 278990., 284720.,
      425080., 433160., 442300., 450400., 514975., 525150., 536600., 546800.,
      519875., 530150., 541700., 552000., 288455., 294650., 301550., 307760.,
      457720., 466440., 476220., 484960., 554175., 565150., 577400., 588400.,
      559075., 570150., 582500., 593600., 310055., 316730., 324110., 330800.,
      170824., 176248., 182068., 187504., 201365., 208190., 215480., 222320.,
      203105., 209990., 217340., 224240., 105693., 109842., 114234., 118392.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      61725.,  62650.,  64850.,  65800.,  66625.,  67650.,  69950.,  71000.,
      100925., 102650., 105650., 107400., 105825., 107650., 110750., 112600.,
      140125., 142650., 146450., 149000., 145025., 147650., 151550., 154200.,
      257725., 262650., 268850., 273800., 262625., 267650., 273950., 279000.,
      296925., 302650., 309650., 315400., 301825., 307650., 314750., 320600.,
      336125., 342650., 350450., 357000., 341025., 347650., 355550., 362200.,
      453725., 462650., 472850., 481800., 458625., 467650., 477950., 487000.,
      492925., 502650., 513650., 523400., 497825., 507650., 518750., 528600.,
      532125., 542650., 554450., 565000., 537025., 547650., 559550., 570200.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      67328.,   67776.,   68224.,   68672.,   71120.,   71584.,   72048.,
      72512.,   89180.,   89800.,   90420.,   91040.,   94080.,   94720.,
      95360.,   96000.,   98540.,   99240.,   99940.,   100640.,  103760.,
      104480.,  105200.,  105920.,  58124.,   58568.,   59012.,   59456.,
      61256.,   61712.,   62168.,   62624.,   131040.,  132080.,  133120.,
      134160.,  137300.,  138360.,  139420.,  140480.,  166175.,  167550.,
      168925.,  170300.,  174200.,  175600.,  177000.,  178400.,  175875.,
      177350.,  178825.,  180300.,  184300.,  185800.,  187300.,  188800.,
      100795.,  101710.,  102625.,  103540.,  105850.,  106780.,  107710.,
      108640.,  195680.,  197360.,  199040.,  200720.,  204500.,  206200.,
      207900.,  209600.,  243775.,  245950.,  248125.,  250300.,  255000.,
      257200.,  259400.,  261600.,  253475.,  255750.,  258025.,  260300.,
      265100.,  267400.,  269700.,  272000.,  143515.,  144910.,  146305.,
      147700.,  150490.,  151900.,  153310.,  154720.,  260320.,  262640.,
      264960.,  267280.,  271700.,  274040.,  276380.,  278720.,  321375.,
      324350.,  327325.,  330300.,  335800.,  338800.,  341800.,  344800.,
      331075.,  334150.,  337225.,  340300.,  345900.,  349000.,  352100.,
      355200.,  186235.,  188110.,  189985.,  191860.,  195130.,  197020.,
      198910.,  200800.,  101984.,  103568.,  105152.,  106736.,  109100.,
      110696.,  112292.,  113888.,  122305.,  124330.,  126355.,  128380.,
      131320.,  133360.,  135400.,  137440.,  125725.,  127810.,  129895.,
      131980.,  134980.,  137080.,  139180.,  141280.,  66117.,   67386.,
      68655.,   69924.,   71670.,   72948.,   74226.,   75504.,   377088.,
      380096.,  383104.,  386112.,  391120.,  394144.,  397168.,  400192.,
      463580.,  467400.,  471220.,  475040.,  481280.,  485120.,  488960.,
      492800.,  472940.,  476840.,  480740.,  484640.,  490960.,  494880.,
      498800.,  502720.,  267404.,  269768.,  272132.,  274496.,  278216.,
      280592.,  282968.,  285344.,  454240.,  458480.,  462720.,  466960.,
      473300.,  477560.,  481820.,  486080.,  554175.,  559550.,  564925.,
      570300.,  578200.,  583600.,  589000.,  594400.,  563875.,  569350.,
      574825.,  580300.,  588300.,  593800.,  599300.,  604800.,  314395.,
      317710.,  321025.,  324340.,  329050.,  332380.,  335710.,  339040.,
      518880.,  523760.,  528640.,  533520.,  540500.,  545400.,  550300.,
      555200.,  631775.,  637950.,  644125.,  650300.,  659000.,  665200.,
      671400.,  677600.,  641475.,  647750.,  654025.,  660300.,  669100.,
      675400.,  681700.,  688000.,  357115.,  360910.,  364705.,  368500.,
      373690.,  377500.,  381310.,  385120.,  583520.,  589040.,  594560.,
      600080.,  607700.,  613240.,  618780.,  624320.,  709375.,  716350.,
      723325.,  730300.,  739800.,  746800.,  753800.,  760800.,  719075.,
      726150.,  733225.,  740300.,  749900.,  757000.,  764100.,  771200.,
      399835.,  404110.,  408385.,  412660.,  418330.,  422620.,  426910.,
      431200.,  219104.,  222608.,  226112.,  229616.,  233900.,  237416.,
      240932.,  244448.,  259105.,  263530.,  267955.,  272380.,  277720.,
      282160.,  286600.,  291040.,  262525.,  267010.,  271495.,  275980.,
      281380.,  285880.,  290380.,  294880.,  136677.,  139386.,  142095.,
      144804.,  147990.,  150708.,  153426.,  156144.,  686848.,  692416.,
      697984.,  703552.,  711120.,  716704.,  722288.,  727872.,  837980.,
      845000.,  852020.,  859040.,  868480.,  875520.,  882560.,  889600.,
      847340.,  854440.,  861540.,  868640.,  878160.,  885280.,  892400.,
      899520.,  476684.,  480968.,  485252.,  489536.,  495176.,  499472.,
      503768.,  508064.,  777440.,  784880.,  792320.,  799760.,  809300.,
      816760.,  824220.,  831680.,  942175.,  951550.,  960925.,  970300.,
      982200.,  991600.,  1001000., 1010400., 951875.,  961350.,  970825.,
      980300.,  992300.,  1001800., 1011300., 1020800., 527995.,  533710.,
      539425.,  545140.,  552250.,  557980.,  563710.,  569440.,  842080.,
      850160.,  858240.,  866320.,  876500.,  884600.,  892700.,  900800.,
      1019775., 1029950., 1040125., 1050300., 1063000., 1073200., 1083400.,
      1093600., 1029475., 1039750., 1050025., 1060300., 1073100., 1083400.,
      1093700., 1104000., 570715.,  576910.,  583105.,  589300.,  596890.,
      603100.,  609310.,  615520.,  906720.,  915440.,  924160.,  932880.,
      943700.,  952440.,  961180.,  969920.,  1097375., 1108350., 1119325.,
      1130300., 1143800., 1154800., 1165800., 1176800., 1107075., 1118150.,
      1129225., 1140300., 1153900., 1165000., 1176100., 1187200., 613435.,
      620110.,  626785.,  633460.,  641530.,  648220.,  654910.,  661600.,
      336224.,  341648.,  347072.,  352496.,  358700.,  364136.,  369572.,
      375008.,  395905.,  402730.,  409555.,  416380.,  424120.,  430960.,
      437800.,  444640.,  399325.,  406210.,  413095.,  419980.,  427780.,
      434680.,  441580.,  448480.,  207237.,  211386.,  215535.,  219684.,
      224310.,  228468.,  232626.,  236784.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122525.,  123450.,  124375.,  125300.,  128750.,  129700.,  130650.,
      131600.,  132225.,  133250.,  134275.,  135300.,  138850.,  139900.,
      140950.,  142000.,  200125.,  201850.,  203575.,  205300.,  209550.,
      211300.,  213050.,  214800.,  209825.,  211650.,  213475.,  215300.,
      219650.,  221500.,  223350.,  225200.,  277725.,  280250.,  282775.,
      285300.,  290350.,  292900.,  295450.,  298000.,  287425.,  290050.,
      292675.,  295300.,  300450.,  303100.,  305750.,  308400.,  510525.,
      515450.,  520375.,  525300.,  532750.,  537700.,  542650.,  547600.,
      520225.,  525250.,  530275.,  535300.,  542850.,  547900.,  552950.,
      558000.,  588125.,  593850.,  599575.,  605300.,  613550.,  619300.,
      625050.,  630800.,  597825.,  603650.,  609475.,  615300.,  623650.,
      629500.,  635350.,  641200.,  665725.,  672250.,  678775.,  685300.,
      694350.,  700900.,  707450.,  714000.,  675425.,  682050.,  688675.,
      695300.,  704450.,  711100.,  717750.,  724400.,  898525.,  907450.,
      916375.,  925300.,  936750.,  945700.,  954650.,  963600.,  908225.,
      917250.,  926275.,  935300.,  946850.,  955900.,  964950.,  974000.,
      976125.,  985850.,  995575.,  1005300., 1017550., 1027300., 1037050.,
      1046800., 985825.,  995650.,  1005475., 1015300., 1027650., 1037500.,
      1047350., 1057200., 1053725., 1064250., 1074775., 1085300., 1098350.,
      1108900., 1119450., 1130000., 1063425., 1074050., 1084675., 1095300.,
      1108450., 1119100., 1129750., 1140400.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      66800.,   68672.,   70576.,   72512.,   88620.,   91040.,   93500.,
      96000.,   98060.,   100640.,  103260.,  105920.,  57908.,   59456.,
      61028.,   62624.,   131060.,  134160.,  137300.,  140480.,  166325.,
      170300.,  174325.,  178400.,  176125.,  180300.,  184525.,  188800.,
      101035.,  103540.,  106075.,  108640.,  196340.,  200720.,  205140.,
      209600.,  244725.,  250300.,  255925.,  261600.,  254525.,  260300.,
      266125.,  272000.,  144235.,  147700.,  151195.,  154720.,  261620.,
      267280.,  272980.,  278720.,  323125.,  330300.,  337525.,  344800.,
      332925.,  340300.,  347725.,  355200.,  187435.,  191860.,  196315.,
      200800.,  103196.,  106736.,  110300.,  113888.,  123895.,  128380.,
      132895.,  137440.,  127375.,  131980.,  136615.,  141280.,  67161.,
      69924.,   72705.,   75504.,   379120.,  386112.,  393136.,  400192.,
      466220.,  475040.,  483900.,  492800.,  475660.,  484640.,  493660.,
      502720.,  269108.,  274496.,  279908.,  285344.,  457460.,  466960.,
      476500.,  486080.,  558325.,  570300.,  582325.,  594400.,  568125.,
      580300.,  592525.,  604800.,  317035.,  324340.,  331675.,  339040.,
      522740.,  533520.,  544340.,  555200.,  636725.,  650300.,  663925.,
      677600.,  646525.,  660300.,  674125.,  688000.,  360235.,  368500.,
      376795.,  385120.,  588020.,  600080.,  612180.,  624320.,  715125.,
      730300.,  745525.,  760800.,  724925.,  740300.,  755725.,  771200.,
      403435.,  412660.,  421915.,  431200.,  222236.,  229616.,  237020.,
      244448.,  263095.,  272380.,  281695.,  291040.,  266575.,  275980.,
      285415.,  294880.,  139161.,  144804.,  150465.,  156144.,  691440.,
      703552.,  715696.,  727872.,  843820.,  859040.,  874300.,  889600.,
      853260.,  868640.,  884060.,  899520.,  480308.,  489536.,  498788.,
      508064.,  783860.,  799760.,  815700.,  831680.,  950325.,  970300.,
      990325.,  1010400., 960125.,  980300.,  1000525., 1020800., 533035.,
      545140.,  557275.,  569440.,  849140.,  866320.,  883540.,  900800.,
      1028725., 1050300., 1071925., 1093600., 1038525., 1060300., 1082125.,
      1104000., 576235.,  589300.,  602395.,  615520.,  914420.,  932880.,
      951380.,  969920.,  1107125., 1130300., 1153525., 1176800., 1116925.,
      1140300., 1163725., 1187200., 619435.,  633460.,  647515.,  661600.,
      341276.,  352496.,  363740.,  375008.,  402295.,  416380.,  430495.,
      444640.,  405775.,  419980.,  434215.,  448480.,  211161.,  219684.,
      228225.,  236784.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122225.,  125300.,  128425.,  131600.,  132025.,  135300.,  138625.,
      142000.,  200625.,  205300.,  210025.,  214800.,  210425.,  215300.,
      220225.,  225200.,  279025.,  285300.,  291625.,  298000.,  288825.,
      295300.,  301825.,  308400.,  514225.,  525300.,  536425.,  547600.,
      524025.,  535300.,  546625.,  558000.,  592625.,  605300.,  618025.,
      630800.,  602425.,  615300.,  628225.,  641200.,  671025.,  685300.,
      699625.,  714000.,  680825.,  695300.,  709825.,  724400.,  906225.,
      925300.,  944425.,  963600.,  916025.,  935300.,  954625.,  974000.,
      984625.,  1005300., 1026025., 1046800., 994425.,  1015300., 1036225.,
      1057200., 1063025., 1085300., 1107625., 1130000., 1072825., 1095300.,
      1117825., 1140400.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      132720.,  133600.,  136448.,  137344.,  140240.,  141152.,  144096.,
      145024.,  176020.,  177240.,  180840.,  182080.,  185740.,  187000.,
      190720.,  192000.,  194740.,  196120.,  199880.,  201280.,  205100.,
      206520.,  210400.,  211840.,  114940.,  115816.,  118024.,  118912.,
      121156.,  122056.,  124336.,  125248.,  260060.,  262120.,  266240.,
      268320.,  272500.,  274600.,  278840.,  280960.,  329925.,  332650.,
      337850.,  340600.,  345875.,  348650.,  354000.,  356800.,  349325.,
      352250.,  357650.,  360600.,  366075.,  369050.,  374600.,  377600.,
      200255.,  202070.,  205250.,  207080.,  210305.,  212150.,  215420.,
      217280.,  389340.,  392680.,  398080.,  401440.,  406900.,  410280.,
      415800.,  419200.,  485125.,  489450.,  496250.,  500600.,  507475.,
      511850.,  518800.,  523200.,  504525.,  509050.,  516050.,  520600.,
      527675.,  532250.,  539400.,  544000.,  285695.,  288470.,  292610.,
      295400.,  299585.,  302390.,  306620.,  309440.,  518620.,  523240.,
      529920.,  534560.,  541300.,  545960.,  552760.,  557440.,  640325.,
      646250.,  654650.,  660600.,  669075.,  675050.,  683600.,  689600.,
      659725.,  665850.,  674450.,  680600.,  689275.,  695450.,  704200.,
      710400.,  371135.,  374870.,  379970.,  383720.,  388865.,  392630.,
      397820.,  401600.,  203236.,  206392.,  210304.,  213472.,  217420.,
      220600.,  224584.,  227776.,  243755.,  247790.,  252710.,  256760.,
      261725.,  265790.,  270800.,  274880.,  250595.,  254750.,  259790.,
      263960.,  269045.,  273230.,  278360.,  282560.,  131793.,  134322.,
      137310.,  139848.,  142863.,  145410.,  148452.,  151008.,  752240.,
      758240.,  766208.,  772224.,  780240.,  786272.,  794336.,  800384.,
      924820.,  932440.,  942440.,  950080.,  960140.,  967800.,  977920.,
      985600.,  943540.,  951320.,  961480.,  969280.,  979500.,  987320.,
      997600.,  1005440., 533500.,  538216.,  544264.,  548992.,  555076.,
      559816.,  565936.,  570688.,  906460.,  914920.,  925440.,  933920.,
      944500.,  953000.,  963640.,  972160.,  1105925., 1116650., 1129850.,
      1140600., 1153875., 1164650., 1178000., 1188800., 1125325., 1136250.,
      1149650., 1160600., 1174075., 1185050., 1198600., 1209600., 627455.,
      634070.,  642050.,  648680.,  656705.,  663350.,  671420.,  678080.,
      1035740., 1045480., 1057280., 1067040., 1078900., 1088680., 1100600.,
      1110400., 1261125., 1273450., 1288250., 1300600., 1315475., 1327850.,
      1342800., 1355200., 1280525., 1293050., 1308050., 1320600., 1335675.,
      1348250., 1363400., 1376000., 712895.,  720470.,  729410.,  737000.,
      745985.,  753590.,  762620.,  770240.,  1165020., 1176040., 1189120.,
      1200160., 1213300., 1224360., 1237560., 1248640., 1416325., 1430250.,
      1446650., 1460600., 1477075., 1491050., 1507600., 1521600., 1435725.,
      1449850., 1466450., 1480600., 1497275., 1511450., 1528200., 1542400.,
      798335.,  806870.,  816770.,  825320.,  835265.,  843830.,  853820.,
      862400.,  437476.,  444472.,  452224.,  459232.,  467020.,  474040.,
      481864.,  488896.,  517355.,  526190.,  535910.,  544760.,  554525.,
      563390.,  573200.,  582080.,  524195.,  533150.,  542990.,  551960.,
      561845.,  570830.,  580760.,  589760.,  272913.,  278322.,  284190.,
      289608.,  295503.,  300930.,  306852.,  312288.,  1371760., 1382880.,
      1395968., 1407104., 1420240., 1431392., 1444576., 1455744., 1673620.,
      1687640., 1704040., 1718080., 1734540., 1748600., 1765120., 1779200.,
      1692340., 1706520., 1723080., 1737280., 1753900., 1768120., 1784800.,
      1799040., 952060.,  960616.,  970504.,  979072.,  988996.,  997576.,
      1007536., 1016128., 1552860., 1567720., 1584640., 1599520., 1616500.,
      1631400., 1648440., 1663360., 1881925., 1900650., 1921850., 1940600.,
      1961875., 1980650., 2002000., 2020800., 1901325., 1920250., 1941650.,
      1960600., 1982075., 2001050., 2022600., 2041600., 1054655., 1066070.,
      1078850., 1090280., 1103105., 1114550., 1127420., 1138880., 1682140.,
      1698280., 1716480., 1732640., 1750900., 1767080., 1785400., 1801600.,
      2037125., 2057450., 2080250., 2100600., 2123475., 2143850., 2166800.,
      2187200., 2056525., 2077050., 2100050., 2120600., 2143675., 2164250.,
      2187400., 2208000., 1140095., 1152470., 1166210., 1178600., 1192385.,
      1204790., 1218620., 1231040., 1811420., 1828840., 1848320., 1865760.,
      1885300., 1902760., 1922360., 1939840., 2192325., 2214250., 2238650.,
      2260600., 2285075., 2307050., 2331600., 2353600., 2211725., 2233850.,
      2258450., 2280600., 2305275., 2327450., 2352200., 2374400., 1225535.,
      1238870., 1253570., 1266920., 1281665., 1295030., 1309820., 1323200.,
      671716.,  682552.,  694144.,  704992.,  716620.,  727480.,  739144.,
      750016.,  790955.,  804590.,  819110.,  832760.,  847325.,  860990.,
      875600.,  889280.,  797795.,  811550.,  826190.,  839960.,  854645.,
      868430.,  883160.,  896960.,  414033.,  422322.,  431070.,  439368.,
      448143.,  456450.,  465252.,  473568.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      242625.,  244450.,  248750.,  250600.,  254975.,  256850.,  261300.,
      263200.,  262025.,  264050.,  268550.,  270600.,  275175.,  277250.,
      281900.,  284000.,  397825.,  401250.,  407150.,  410600.,  416575.,
      420050.,  426100.,  429600.,  417225.,  420850.,  426950.,  430600.,
      436775.,  440450.,  446700.,  450400.,  553025.,  558050.,  565550.,
      570600.,  578175.,  583250.,  590900.,  596000.,  572425.,  577650.,
      585350.,  590600.,  598375.,  603650.,  611500.,  616800.,  1018625.,
      1028450., 1040750., 1050600., 1062975., 1072850., 1085300., 1095200.,
      1038025., 1048050., 1060550., 1070600., 1083175., 1093250., 1105900.,
      1116000., 1173825., 1185250., 1199150., 1210600., 1224575., 1236050.,
      1250100., 1261600., 1193225., 1204850., 1218950., 1230600., 1244775.,
      1256450., 1270700., 1282400., 1329025., 1342050., 1357550., 1370600.,
      1386175., 1399250., 1414900., 1428000., 1348425., 1361650., 1377350.,
      1390600., 1406375., 1419650., 1435500., 1448800., 1794625., 1812450.,
      1832750., 1850600., 1870975., 1888850., 1909300., 1927200., 1814025.,
      1832050., 1852550., 1870600., 1891175., 1909250., 1929900., 1948000.,
      1949825., 1969250., 1991150., 2010600., 2032575., 2052050., 2074100.,
      2093600., 1969225., 1988850., 2010950., 2030600., 2052775., 2072450.,
      2094700., 2114400., 2105025., 2126050., 2149550., 2170600., 2194175.,
      2215250., 2238900., 2260000., 2124425., 2145650., 2169350., 2190600.,
      2214375., 2235650., 2259500., 2280800.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      264560.,  265440.,  266320.,  267200.,  272000.,  272896.,  273792.,
      274688.,  279568.,  280480.,  281392.,  282304.,  287264.,  288192.,
      289120.,  290048.,  350820.,  352040.,  353260.,  354480.,  360440.,
      361680.,  362920.,  364160.,  370220.,  371480.,  372740.,  374000.,
      380160.,  381440.,  382720.,  384000.,  388100.,  389480.,  390860.,
      392240.,  398360.,  399760.,  401160.,  402560.,  408780.,  410200.,
      411620.,  413040.,  419360.,  420800.,  422240.,  423680.,  229004.,
      229880.,  230756.,  231632.,  235160.,  236048.,  236936.,  237824.,
      241412.,  242312.,  243212.,  244112.,  247760.,  248672.,  249584.,
      250496.,  518060.,  520120.,  522180.,  524240.,  530400.,  532480.,
      534560.,  536640.,  542900.,  545000.,  547100.,  549200.,  555560.,
      557680.,  559800.,  561920.,  657125.,  659850.,  662575.,  665300.,
      672950.,  675700.,  678450.,  681200.,  688975.,  691750.,  694525.,
      697300.,  705200.,  708000.,  710800.,  713600.,  695725.,  698650.,
      701575.,  704500.,  712350.,  715300.,  718250.,  721200.,  729175.,
      732150.,  735125.,  738100.,  746200.,  749200.,  752200.,  755200.,
      398695.,  400510.,  402325.,  404140.,  408670.,  410500.,  412330.,
      414160.,  418765.,  420610.,  422455.,  424300.,  428980.,  430840.,
      432700.,  434560.,  775340.,  778680.,  782020.,  785360.,  792800.,
      796160.,  799520.,  802880.,  810420.,  813800.,  817180.,  820560.,
      828200.,  831600.,  835000.,  838400.,  965925.,  970250.,  974575.,
      978900.,  988150.,  992500.,  996850.,  1001200., 1010575., 1014950.,
      1019325., 1023700., 1033200., 1037600., 1042000., 1046400., 1004525.,
      1009050., 1013575., 1018100., 1027550., 1032100., 1036650., 1041200.,
      1050775., 1055350., 1059925., 1064500., 1074200., 1078800., 1083400.,
      1088000., 568615.,  571390.,  574165.,  576940.,  582430.,  585220.,
      588010.,  590800.,  596365.,  599170.,  601975.,  604780.,  610420.,
      613240.,  616060.,  618880.,  1032620., 1037240., 1041860., 1046480.,
      1055200., 1059840., 1064480., 1069120., 1077940., 1082600., 1087260.,
      1091920., 1100840., 1105520., 1110200., 1114880., 1274725., 1280650.,
      1286575., 1292500., 1303350., 1309300., 1315250., 1321200., 1332175.,
      1338150., 1344125., 1350100., 1361200., 1367200., 1373200., 1379200.,
      1313325., 1319450., 1325575., 1331700., 1342750., 1348900., 1355050.,
      1361200., 1372375., 1378550., 1384725., 1390900., 1402200., 1408400.,
      1414600., 1420800., 738535.,  742270.,  746005.,  749740.,  756190.,
      759940.,  763690.,  767440.,  773965.,  777730.,  781495.,  785260.,
      791860.,  795640.,  799420.,  803200.,  403316.,  406472.,  409628.,
      412784.,  417440.,  420608.,  423776.,  426944.,  431660.,  434840.,
      438020.,  441200.,  445976.,  449168.,  452360.,  455552.,  483475.,
      487510.,  491545.,  495580.,  501370.,  505420.,  509470.,  513520.,
      519385.,  523450.,  527515.,  531580.,  537520.,  541600.,  545680.,
      549760.,  497035.,  501190.,  505345.,  509500.,  515410.,  519580.,
      523750.,  527920.,  533905.,  538090.,  542275.,  546460.,  552520.,
      556720.,  560920.,  565120.,  261057.,  263586.,  266115.,  268644.,
      272082.,  274620.,  277158.,  279696.,  283179.,  285726.,  288273.,
      290820.,  294348.,  296904.,  299460.,  302016.,  1498480., 1504480.,
      1510480., 1516480., 1526400., 1532416., 1538432., 1544448., 1554448.,
      1560480., 1566512., 1572544., 1582624., 1588672., 1594720., 1600768.,
      1842020., 1849640., 1857260., 1864880., 1877240., 1884880., 1892520.,
      1900160., 1912620., 1920280., 1927940., 1935600., 1948160., 1955840.,
      1963520., 1971200., 1879300., 1887080., 1894860., 1902640., 1915160.,
      1922960., 1930760., 1938560., 1951180., 1959000., 1966820., 1974640.,
      1987360., 1995200., 2003040., 2010880., 1062284., 1067000., 1071716.,
      1076432., 1083800., 1088528., 1093256., 1097984., 1105412., 1110152.,
      1114892., 1119632., 1127120., 1131872., 1136624., 1141376., 1804460.,
      1812920., 1821380., 1829840., 1842400., 1850880., 1859360., 1867840.,
      1880500., 1889000., 1897500., 1906000., 1918760., 1927280., 1935800.,
      1944320., 2201125., 2211850., 2222575., 2233300., 2248950., 2259700.,
      2270450., 2281200., 2296975., 2307750., 2318525., 2329300., 2345200.,
      2356000., 2366800., 2377600., 2239725., 2250650., 2261575., 2272500.,
      2288350., 2299300., 2310250., 2321200., 2337175., 2348150., 2359125.,
      2370100., 2386200., 2397200., 2408200., 2419200., 1248295., 1254910.,
      1261525., 1268140., 1277470., 1284100., 1290730., 1297360., 1306765.,
      1313410., 1320055., 1326700., 1336180., 1342840., 1349500., 1356160.,
      2061740., 2071480., 2081220., 2090960., 2104800., 2114560., 2124320.,
      2134080., 2148020., 2157800., 2167580., 2177360., 2191400., 2201200.,
      2211000., 2220800., 2509925., 2522250., 2534575., 2546900., 2564150.,
      2576500., 2588850., 2601200., 2618575., 2630950., 2643325., 2655700.,
      2673200., 2685600., 2698000., 2710400., 2548525., 2561050., 2573575.,
      2586100., 2603550., 2616100., 2628650., 2641200., 2658775., 2671350.,
      2683925., 2696500., 2714200., 2726800., 2739400., 2752000., 1418215.,
      1425790., 1433365., 1440940., 1451230., 1458820., 1466410., 1474000.,
      1484365., 1491970., 1499575., 1507180., 1517620., 1525240., 1532860.,
      1540480., 2319020., 2330040., 2341060., 2352080., 2367200., 2378240.,
      2389280., 2400320., 2415540., 2426600., 2437660., 2448720., 2464040.,
      2475120., 2486200., 2497280., 2818725., 2832650., 2846575., 2860500.,
      2879350., 2893300., 2907250., 2921200., 2940175., 2954150., 2968125.,
      2982100., 3001200., 3015200., 3029200., 3043200., 2857325., 2871450.,
      2885575., 2899700., 2918750., 2932900., 2947050., 2961200., 2980375.,
      2994550., 3008725., 3022900., 3042200., 3056400., 3070600., 3084800.,
      1588135., 1596670., 1605205., 1613740., 1624990., 1633540., 1642090.,
      1650640., 1661965., 1670530., 1679095., 1687660., 1699060., 1707640.,
      1716220., 1724800., 867956.,  874952.,  881948.,  888944.,  897440.,
      904448.,  911456.,  918464.,  927020.,  934040.,  941060.,  948080.,
      956696.,  963728.,  970760.,  977792.,  1025875., 1034710., 1043545.,
      1052380., 1062970., 1071820., 1080670., 1089520., 1100185., 1109050.,
      1117915., 1126780., 1137520., 1146400., 1155280., 1164160., 1039435.,
      1048390., 1057345., 1066300., 1077010., 1085980., 1094950., 1103920.,
      1114705., 1123690., 1132675., 1141660., 1152520., 1161520., 1170520.,
      1179520., 540417.,  545826.,  551235.,  556644.,  562962.,  568380.,
      573798.,  579216.,  585579.,  591006.,  596433.,  601860.,  608268.,
      613704.,  619140.,  624576.,  2732400., 2743520., 2754640., 2765760.,
      2780800., 2791936., 2803072., 2814208., 2829328., 2840480., 2851632.,
      2862784., 2877984., 2889152., 2900320., 2911488., 3333220., 3347240.,
      3361260., 3375280., 3394040., 3408080., 3422120., 3436160., 3455020.,
      3469080., 3483140., 3497200., 3516160., 3530240., 3544320., 3558400.,
      3370500., 3384680., 3398860., 3413040., 3431960., 3446160., 3460360.,
      3474560., 3493580., 3507800., 3522020., 3536240., 3555360., 3569600.,
      3583840., 3598080., 1895564., 1904120., 1912676., 1921232., 1932440.,
      1941008., 1949576., 1958144., 1969412., 1977992., 1986572., 1995152.,
      2006480., 2015072., 2023664., 2032256., 3090860., 3105720., 3120580.,
      3135440., 3154400., 3169280., 3184160., 3199040., 3218100., 3233000.,
      3247900., 3262800., 3281960., 3296880., 3311800., 3326720., 3745125.,
      3763850., 3782575., 3801300., 3824950., 3843700., 3862450., 3881200.,
      3904975., 3923750., 3942525., 3961300., 3985200., 4004000., 4022800.,
      4041600., 3783725., 3802650., 3821575., 3840500., 3864350., 3883300.,
      3902250., 3921200., 3945175., 3964150., 3983125., 4002100., 4026200.,
      4045200., 4064200., 4083200., 2097895., 2109310., 2120725., 2132140.,
      2146270., 2157700., 2169130., 2180560., 2194765., 2206210., 2217655.,
      2229100., 2243380., 2254840., 2266300., 2277760., 3348140., 3364280.,
      3380420., 3396560., 3416800., 3432960., 3449120., 3465280., 3485620.,
      3501800., 3517980., 3534160., 3554600., 3570800., 3587000., 3603200.,
      4053925., 4074250., 4094575., 4114900., 4140150., 4160500., 4180850.,
      4201200., 4226575., 4246950., 4267325., 4287700., 4313200., 4333600.,
      4354000., 4374400., 4092525., 4113050., 4133575., 4154100., 4179550.,
      4200100., 4220650., 4241200., 4266775., 4287350., 4307925., 4328500.,
      4354200., 4374800., 4395400., 4416000., 2267815., 2280190., 2292565.,
      2304940., 2320030., 2332420., 2344810., 2357200., 2372365., 2384770.,
      2397175., 2409580., 2424820., 2437240., 2449660., 2462080., 3605420.,
      3622840., 3640260., 3657680., 3679200., 3696640., 3714080., 3731520.,
      3753140., 3770600., 3788060., 3805520., 3827240., 3844720., 3862200.,
      3879680., 4362725., 4384650., 4406575., 4428500., 4455350., 4477300.,
      4499250., 4521200., 4548175., 4570150., 4592125., 4614100., 4641200.,
      4663200., 4685200., 4707200., 4401325., 4423450., 4445575., 4467700.,
      4494750., 4516900., 4539050., 4561200., 4588375., 4610550., 4632725.,
      4654900., 4682200., 4704400., 4726600., 4748800., 2437735., 2451070.,
      2464405., 2477740., 2493790., 2507140., 2520490., 2533840., 2549965.,
      2563330., 2576695., 2590060., 2606260., 2619640., 2633020., 2646400.,
      1332596., 1343432., 1354268., 1365104., 1377440., 1388288., 1399136.,
      1409984., 1422380., 1433240., 1444100., 1454960., 1467416., 1478288.,
      1489160., 1500032., 1568275., 1581910., 1595545., 1609180., 1624570.,
      1638220., 1651870., 1665520., 1680985., 1694650., 1708315., 1721980.,
      1737520., 1751200., 1764880., 1778560., 1581835., 1595590., 1609345.,
      1623100., 1638610., 1652380., 1666150., 1679920., 1695505., 1709290.,
      1723075., 1736860., 1752520., 1766320., 1780120., 1793920., 819777.,
      828066.,  836355.,  844644.,  853842.,  862140.,  870438.,  878736.,
      887979.,  896286.,  904593.,  912900.,  922188.,  930504.,  938820.,
      947136.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      483425.,  485250.,  487075.,  488900.,  495650.,  497500.,  499350.,
      501200.,  508075.,  509950.,  511825.,  513700.,  520700.,  522600.,
      524500.,  526400.,  522025.,  524050.,  526075.,  528100.,  535050.,
      537100.,  539150.,  541200.,  548275.,  550350.,  552425.,  554500.,
      561700.,  563800.,  565900.,  568000.,  792225.,  795650.,  799075.,
      802500.,  810850.,  814300.,  817750.,  821200.,  829675.,  833150.,
      836625.,  840100.,  848700.,  852200.,  855700.,  859200.,  830825.,
      834450.,  838075.,  841700.,  850250.,  853900.,  857550.,  861200.,
      869875.,  873550.,  877225.,  880900.,  889700.,  893400.,  897100.,
      900800.,  1101025., 1106050., 1111075., 1116100., 1126050., 1131100.,
      1136150., 1141200., 1151275., 1156350., 1161425., 1166500., 1176700.,
      1181800., 1186900., 1192000., 1139625., 1144850., 1150075., 1155300.,
      1165450., 1170700., 1175950., 1181200., 1191475., 1196750., 1202025.,
      1207300., 1217700., 1223000., 1228300., 1233600., 2027425., 2037250.,
      2047075., 2056900., 2071650., 2081500., 2091350., 2101200., 2116075.,
      2125950., 2135825., 2145700., 2160700., 2170600., 2180500., 2190400.,
      2066025., 2076050., 2086075., 2096100., 2111050., 2121100., 2131150.,
      2141200., 2156275., 2166350., 2176425., 2186500., 2201700., 2211800.,
      2221900., 2232000., 2336225., 2347650., 2359075., 2370500., 2386850.,
      2398300., 2409750., 2421200., 2437675., 2449150., 2460625., 2472100.,
      2488700., 2500200., 2511700., 2523200., 2374825., 2386450., 2398075.,
      2409700., 2426250., 2437900., 2449550., 2461200., 2477875., 2489550.,
      2501225., 2512900., 2529700., 2541400., 2553100., 2564800., 2645025.,
      2658050., 2671075., 2684100., 2702050., 2715100., 2728150., 2741200.,
      2759275., 2772350., 2785425., 2798500., 2816700., 2829800., 2842900.,
      2856000., 2683625., 2696850., 2710075., 2723300., 2741450., 2754700.,
      2767950., 2781200., 2799475., 2812750., 2826025., 2839300., 2857700.,
      2871000., 2884300., 2897600., 3571425., 3589250., 3607075., 3624900.,
      3647650., 3665500., 3683350., 3701200., 3724075., 3741950., 3759825.,
      3777700., 3800700., 3818600., 3836500., 3854400., 3610025., 3628050.,
      3646075., 3664100., 3687050., 3705100., 3723150., 3741200., 3764275.,
      3782350., 3800425., 3818500., 3841700., 3859800., 3877900., 3896000.,
      3880225., 3899650., 3919075., 3938500., 3962850., 3982300., 4001750.,
      4021200., 4045675., 4065150., 4084625., 4104100., 4128700., 4148200.,
      4167700., 4187200., 3918825., 3938450., 3958075., 3977700., 4002250.,
      4021900., 4041550., 4061200., 4085875., 4105550., 4125225., 4144900.,
      4169700., 4189400., 4209100., 4228800., 4189025., 4210050., 4231075.,
      4252100., 4278050., 4299100., 4320150., 4341200., 4367275., 4388350.,
      4409425., 4430500., 4456700., 4477800., 4498900., 4520000., 4227625.,
      4248850., 4270075., 4291300., 4317450., 4338700., 4359950., 4381200.,
      4407475., 4428750., 4450025., 4471300., 4497700., 4519000., 4540300.,
      4561600.};
  const std::array<int, 4> in_shape = {{3, 10, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5500.,  7180.,  7800.,  8420.,  4934.,  10800., 13600., 14250., 14900.,
      8530.,  16200., 20100., 20750., 21400., 12130., 21600., 26600., 27250.,
      27900., 15730., 8830.,  10610., 10850., 11090., 5913.,  31100., 38180.,
      38800., 39420., 22334., 37800., 46100., 46750., 47400., 26530., 43200.,
      52600., 53250., 53900., 30130., 48600., 59100., 59750., 60400., 33730.,
      19030., 22610., 22850., 23090., 12213., 56700., 69180., 69800., 70420.,
      39734., 64800., 78600., 79250., 79900., 44530., 70200., 85100., 85750.,
      86400., 48130., 75600., 91600., 92250., 92900., 51730., 29230., 34610.,
      34850., 35090., 18513.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x10x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10025., 10675., 11325., 16525., 17175., 17825., 23025., 23675., 24325.,
      42525., 43175., 43825., 49025., 49675., 50325., 55525., 56175., 56825.,
      75025., 75675., 76325., 81525., 82175., 82825., 88025., 88675., 89325.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10720.,  11000.,  13980.,  14360.,  15180.,  15600.,  16380.,  16840.,
      9580.,   9868.,   20950.,  21600.,  26350.,  27200.,  27600.,  28500.,
      28850.,  29800.,  16475.,  17060.,  31350.,  32400.,  38850.,  40200.,
      40100.,  41500.,  41350.,  42800.,  23375.,  24260.,  41750.,  43200.,
      51350.,  53200.,  52600.,  54500.,  53850.,  55800.,  30275.,  31460.,
      16670.,  17660.,  19960.,  21220.,  20410.,  21700.,  20860.,  22180.,
      11025.,  11826.,  60320.,  62200.,  73980.,  76360.,  75180.,  77600.,
      76380.,  78840.,  43180.,  44668.,  72950.,  75600.,  88850.,  92200.,
      90100.,  93500.,  91350.,  94800.,  50975.,  53060.,  83350.,  86400.,
      101350., 105200., 102600., 106500., 103850., 107800., 57875.,  60260.,
      93750.,  97200.,  113850., 118200., 115100., 119500., 116350., 120800.,
      64775.,  67460.,  35870.,  38060.,  42460.,  45220.,  42910.,  45700.,
      43360.,  46180.,  22725.,  24426.,  109920., 113400., 133980., 138360.,
      135180., 139600., 136380., 140840., 76780.,  79468.,  124950., 129600.,
      151350., 157200., 152600., 158500., 153850., 159800., 85475.,  89060.,
      135350., 140400., 163850., 170200., 165100., 171500., 166350., 172800.,
      92375.,  96260.,  145750., 151200., 176350., 183200., 177600., 184500.,
      178850., 185800., 99275.,  103460., 55070.,  58460.,  64960.,  69220.,
      65410.,  69700.,  65860.,  70180.,  34425.,  37026.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x10x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19475.,  20050.,  20725.,  21350.,  21975.,  22650.,  31975.,  33050.,
      33225.,  34350.,  34475.,  35650.,  44475.,  46050.,  45725.,  47350.,
      46975.,  48650.,  81975.,  85050.,  83225.,  86350.,  84475.,  87650.,
      94475.,  98050.,  95725.,  99350.,  96975.,  100650., 106975., 111050.,
      108225., 112350., 109475., 113650., 144475., 150050., 145725., 151350.,
      146975., 152650., 156975., 163050., 158225., 164350., 159475., 165650.,
      169475., 176050., 170725., 177350., 171975., 178650.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21160.,  21440.,  21720.,  22000.,  27580.,  27960.,  28340.,  28720.,
      29940.,  30360.,  30780.,  31200.,  32300.,  32760.,  33220.,  33680.,
      18872.,  19160.,  19448.,  19736.,  41250.,  41900.,  42550.,  43200.,
      51850.,  52700.,  53550.,  54400.,  54300.,  55200.,  56100.,  57000.,
      56750.,  57700.,  58650.,  59600.,  32365.,  32950.,  33535.,  34120.,
      61650.,  62700.,  63750.,  64800.,  76350.,  77700.,  79050.,  80400.,
      78800.,  80200.,  81600.,  83000.,  81250.,  82700.,  84150.,  85600.,
      45865.,  46750.,  47635.,  48520.,  82050.,  83500.,  84950.,  86400.,
      100850., 102700., 104550., 106400., 103300., 105200., 107100., 109000.,
      105750., 107700., 109650., 111600., 59365.,  60550.,  61735.,  62920.,
      32350.,  33340.,  34330.,  35320.,  38660.,  39920.,  41180.,  42440.,
      39530.,  40820.,  42110.,  43400.,  40400.,  41720.,  43040.,  44360.,
      21249.,  22050.,  22851.,  23652.,  118760., 120640., 122520., 124400.,
      145580., 147960., 150340., 152720., 147940., 150360., 152780., 155200.,
      150300., 152760., 155220., 157680., 84872.,  86360.,  87848.,  89336.,
      143250., 145900., 148550., 151200., 174350., 177700., 181050., 184400.,
      176800., 180200., 183600., 187000., 179250., 182700., 186150., 189600.,
      99865.,  101950., 104035., 106120., 163650., 166700., 169750., 172800.,
      198850., 202700., 206550., 210400., 201300., 205200., 209100., 213000.,
      203750., 207700., 211650., 215600., 113365., 115750., 118135., 120520.,
      184050., 187500., 190950., 194400., 223350., 227700., 232050., 236400.,
      225800., 230200., 234600., 239000., 228250., 232700., 237150., 241600.,
      126865., 129550., 132235., 134920., 69550.,  71740.,  73930.,  76120.,
      82160.,  84920.,  87680.,  90440.,  83030.,  85820.,  88610.,  91400.,
      83900.,  86720.,  89540.,  92360.,  43749.,  45450.,  47151.,  48852.,
      216360., 219840., 223320., 226800., 263580., 267960., 272340., 276720.,
      265940., 270360., 274780., 279200., 268300., 272760., 277220., 281680.,
      150872., 153560., 156248., 158936., 245250., 249900., 254550., 259200.,
      296850., 302700., 308550., 314400., 299300., 305200., 311100., 317000.,
      301750., 307700., 313650., 319600., 167365., 170950., 174535., 178120.,
      265650., 270700., 275750., 280800., 321350., 327700., 334050., 340400.,
      323800., 330200., 336600., 343000., 326250., 332700., 339150., 345600.,
      180865., 184750., 188635., 192520., 286050., 291500., 296950., 302400.,
      345850., 352700., 359550., 366400., 348300., 355200., 362100., 369000.,
      350750., 357700., 364650., 371600., 194365., 198550., 202735., 206920.,
      106750., 110140., 113530., 116920., 125660., 129920., 134180., 138440.,
      126530., 130820., 135110., 139400., 127400., 131720., 136040., 140360.,
      66249.,  68850.,  71451.,  74052.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x10x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38375.,  38950.,  39525.,  40100.,  40825.,  41450.,  42075.,  42700.,
      43275.,  43950.,  44625.,  45300.,  62875.,  63950.,  65025.,  66100.,
      65325.,  66450.,  67575.,  68700.,  67775.,  68950.,  70125.,  71300.,
      87375.,  88950.,  90525.,  92100.,  89825.,  91450.,  93075.,  94700.,
      92275.,  93950.,  95625.,  97300.,  160875., 163950., 167025., 170100.,
      163325., 166450., 169575., 172700., 165775., 168950., 172125., 175300.,
      185375., 188950., 192525., 196100., 187825., 191450., 195075., 198700.,
      190275., 193950., 197625., 201300., 209875., 213950., 218025., 222100.,
      212325., 216450., 220575., 224700., 214775., 218950., 223125., 227300.,
      283375., 288950., 294525., 300100., 285825., 291450., 297075., 302700.,
      288275., 293950., 299625., 305300., 307875., 313950., 320025., 326100.,
      310325., 316450., 322575., 328700., 312775., 318950., 325125., 331300.,
      332375., 338950., 345525., 352100., 334825., 341450., 348075., 354700.,
      337275., 343950., 350625., 357300.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20944.,  22000.,  27360.,  28720.,  29760.,  31200.,  32160.,  33680.,
      18824.,  19736.,  41380.,  43200.,  52075.,  54400.,  54575.,  57000.,
      57075.,  59600.,  32605.,  34120.,  62180.,  64800.,  77075.,  80400.,
      79575.,  83000.,  82075.,  85600.,  46405.,  48520.,  82980.,  86400.,
      102075., 106400., 104575., 109000., 107075., 111600., 60205.,  62920.,
      33148.,  35320.,  39695.,  42440.,  40595.,  43400.,  41495.,  44360.,
      21933.,  23652.,  120144., 124400., 147360., 152720., 149760., 155200.,
      152160., 157680., 86024.,  89336.,  145380., 151200., 177075., 184400.,
      179575., 187000., 182075., 189600., 101605., 106120., 166180., 172800.,
      202075., 210400., 204575., 213000., 207075., 215600., 115405., 120520.,
      186980., 194400., 227075., 236400., 229575., 239000., 232075., 241600.,
      129205., 134920., 71548.,  76120.,  84695.,  90440.,  85595.,  91400.,
      86495.,  92360.,  45333.,  48852.,  219344., 226800., 267360., 276720.,
      269760., 279200., 272160., 281680., 153224., 158936., 249380., 259200.,
      302075., 314400., 304575., 317000., 307075., 319600., 170605., 178120.,
      270180., 280800., 327075., 340400., 329575., 343000., 332075., 345600.,
      184405., 192520., 290980., 302400., 352075., 366400., 354575., 369000.,
      357075., 371600., 198205., 206920., 109948., 116920., 129695., 138440.,
      130595., 139400., 131495., 140360., 68733.,  74052.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x10x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38325.,  40100.,  40825.,  42700.,  43325.,  45300.,  63325.,  66100.,
      65825.,  68700.,  68325.,  71300.,  88325.,  92100.,  90825.,  94700.,
      93325.,  97300.,  163325., 170100., 165825., 172700., 168325., 175300.,
      188325., 196100., 190825., 198700., 193325., 201300., 213325., 222100.,
      215825., 224700., 218325., 227300., 288325., 300100., 290825., 302700.,
      293325., 305300., 313325., 326100., 315825., 328700., 318325., 331300.,
      338325., 352100., 340825., 354700., 343325., 357300.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41344.,  41888.,  43440.,  44000.,  53980.,  54720.,  56680.,  57440.,
      58700.,  59520.,  61560.,  62400.,  63420.,  64320.,  66440.,  67360.,
      37084.,  37648.,  38896.,  39472.,  81480.,  82760.,  85100.,  86400.,
      102475., 104150., 107100., 108800., 107375., 109150., 112200., 114000.,
      112275., 114150., 117300., 119200., 64055.,  65210.,  67070.,  68240.,
      122280., 124360., 127500., 129600., 151475., 154150., 158100., 160800.,
      156375., 159150., 163200., 166000., 161275., 164150., 168300., 171200.,
      91055.,  92810.,  95270.,  97040.,  163080., 165960., 169900., 172800.,
      200475., 204150., 209100., 212800., 205375., 209150., 214200., 218000.,
      210275., 214150., 219300., 223200., 118055., 120410., 123470., 125840.,
      64328.,  66296.,  68660.,  70640.,  76885.,  79390.,  82360.,  84880.,
      78625.,  81190.,  84220.,  86800.,  80365.,  82990.,  86080.,  88720.,
      42273.,  43866.,  45702.,  47304.,  236544., 240288., 245040., 248800.,
      289980., 294720., 300680., 305440., 294700., 299520., 305560., 310400.,
      299420., 304320., 310440., 315360., 169084., 172048., 175696., 178672.,
      285480., 290760., 297100., 302400., 347475., 354150., 362100., 368800.,
      352375., 359150., 367200., 374000., 357275., 364150., 372300., 379200.,
      199055., 203210., 208070., 212240., 326280., 332360., 339500., 345600.,
      396475., 404150., 413100., 420800., 401375., 409150., 418200., 426000.,
      406275., 414150., 423300., 431200., 226055., 230810., 236270., 241040.,
      367080., 373960., 381900., 388800., 445475., 454150., 464100., 472800.,
      450375., 459150., 469200., 478000., 455275., 464150., 474300., 483200.,
      253055., 258410., 264470., 269840., 138728., 143096., 147860., 152240.,
      163885., 169390., 175360., 180880., 165625., 171190., 177220., 182800.,
      167365., 172990., 179080., 184720., 87273.,  90666.,  94302.,  97704.,
      431744., 438688., 446640., 453600., 525980., 534720., 544680., 553440.,
      530700., 539520., 549560., 558400., 535420., 544320., 554440., 563360.,
      301084., 306448., 312496., 317872., 489480., 498760., 509100., 518400.,
      592475., 604150., 617100., 628800., 597375., 609150., 622200., 634000.,
      602275., 614150., 627300., 639200., 334055., 341210., 349070., 356240.,
      530280., 540360., 551500., 561600., 641475., 654150., 668100., 680800.,
      646375., 659150., 673200., 686000., 651275., 664150., 678300., 691200.,
      361055., 368810., 377270., 385040., 571080., 581960., 593900., 604800.,
      690475., 704150., 719100., 732800., 695375., 709150., 724200., 738000.,
      700275., 714150., 729300., 743200., 388055., 396410., 405470., 413840.,
      213128., 219896., 227060., 233840., 250885., 259390., 268360., 276880.,
      252625., 261190., 270220., 278800., 254365., 262990., 272080., 280720.,
      132273., 137466., 142902., 148104.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x10x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      75525.,  76650.,  79050.,  80200.,  80425.,  81650.,  84150.,  85400.,
      85325.,  86650.,  89250.,  90600.,  124525., 126650., 130050., 132200.,
      129425., 131650., 135150., 137400., 134325., 136650., 140250., 142600.,
      173525., 176650., 181050., 184200., 178425., 181650., 186150., 189400.,
      183325., 186650., 191250., 194600., 320525., 326650., 334050., 340200.,
      325425., 331650., 339150., 345400., 330325., 336650., 344250., 350600.,
      369525., 376650., 385050., 392200., 374425., 381650., 390150., 397400.,
      379325., 386650., 395250., 402600., 418525., 426650., 436050., 444200.,
      423425., 431650., 441150., 449400., 428325., 436650., 446250., 454600.,
      565525., 576650., 589050., 600200., 570425., 581650., 594150., 605400.,
      575325., 586650., 599250., 610600., 614525., 626650., 640050., 652200.,
      619425., 631650., 645150., 657400., 624325., 636650., 650250., 662600.,
      663525., 676650., 691050., 704200., 668425., 681650., 696150., 709400.,
      673325., 686650., 701250., 714600.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      82144.,   82688.,   83232.,   83776.,   86320.,   86880.,   87440.,
      88000.,   107220.,  107960.,  108700.,  109440.,  112600.,  113360.,
      114120.,  114880.,  116580.,  117400.,  118220.,  119040.,  122280.,
      123120.,  123960.,  124800.,  125940.,  126840.,  127740.,  128640.,
      131960.,  132880.,  133800.,  134720.,  73604.,   74168.,   74732.,
      75296.,   77216.,   77792.,   78368.,   78944.,   161680.,  162960.,
      164240.,  165520.,  168900.,  170200.,  171500.,  172800.,  203275.,
      204950.,  206625.,  208300.,  212500.,  214200.,  215900.,  217600.,
      212975.,  214750.,  216525.,  218300.,  222600.,  224400.,  226200.,
      228000.,  222675.,  224550.,  226425.,  228300.,  232700.,  234600.,
      236500.,  238400.,  126955.,  128110.,  129265.,  130420.,  132970.,
      134140.,  135310.,  136480.,  242480.,  244560.,  246640.,  248720.,
      252900.,  255000.,  257100.,  259200.,  300275.,  302950.,  305625.,
      308300.,  313500.,  316200.,  318900.,  321600.,  309975.,  312750.,
      315525.,  318300.,  323600.,  326400.,  329200.,  332000.,  319675.,
      322550.,  325425.,  328300.,  333700.,  336600.,  339500.,  342400.,
      180355.,  182110.,  183865.,  185620.,  188770.,  190540.,  192310.,
      194080.,  323280.,  326160.,  329040.,  331920.,  336900.,  339800.,
      342700.,  345600.,  397275.,  400950.,  404625.,  408300.,  414500.,
      418200.,  421900.,  425600.,  406975.,  410750.,  414525.,  418300.,
      424600.,  428400.,  432200.,  436000.,  416675.,  420550.,  424425.,
      428300.,  434700.,  438600.,  442500.,  446400.,  233755.,  236110.,
      238465.,  240820.,  244570.,  246940.,  249310.,  251680.,  126688.,
      128656.,  130624.,  132592.,  135340.,  137320.,  139300.,  141280.,
      151265.,  153770.,  156275.,  158780.,  162200.,  164720.,  167240.,
      169760.,  154685.,  157250.,  159815.,  162380.,  165860.,  168440.,
      171020.,  173600.,  158105.,  160730.,  163355.,  165980.,  169520.,
      172160.,  174800.,  177440.,  82953.,   84546.,   86139.,   87732.,
      89802.,   91404.,   93006.,   94608.,   469344.,  473088.,  476832.,
      480576.,  486320.,  490080.,  493840.,  497600.,  575220.,  579960.,
      584700.,  589440.,  596600.,  601360.,  606120.,  610880.,  584580.,
      589400.,  594220.,  599040.,  606280.,  611120.,  615960.,  620800.,
      593940.,  598840.,  603740.,  608640.,  615960.,  620880.,  625800.,
      630720.,  335204.,  338168.,  341132.,  344096.,  348416.,  351392.,
      354368.,  357344.,  565680.,  570960.,  576240.,  581520.,  588900.,
      594200.,  599500.,  604800.,  688275.,  694950.,  701625.,  708300.,
      717500.,  724200.,  730900.,  737600.,  697975.,  704750.,  711525.,
      718300.,  727600.,  734400.,  741200.,  748000.,  707675.,  714550.,
      721425.,  728300.,  737700.,  744600.,  751500.,  758400.,  393955.,
      398110.,  402265.,  406420.,  411970.,  416140.,  420310.,  424480.,
      646480.,  652560.,  658640.,  664720.,  672900.,  679000.,  685100.,
      691200.,  785275.,  792950.,  800625.,  808300.,  818500.,  826200.,
      833900.,  841600.,  794975.,  802750.,  810525.,  818300.,  828600.,
      836400.,  844200.,  852000.,  804675.,  812550.,  820425.,  828300.,
      838700.,  846600.,  854500.,  862400.,  447355.,  452110.,  456865.,
      461620.,  467770.,  472540.,  477310.,  482080.,  727280.,  734160.,
      741040.,  747920.,  756900.,  763800.,  770700.,  777600.,  882275.,
      890950.,  899625.,  908300.,  919500.,  928200.,  936900.,  945600.,
      891975.,  900750.,  909525.,  918300.,  929600.,  938400.,  947200.,
      956000.,  901675.,  910550.,  919425.,  928300.,  939700.,  948600.,
      957500.,  966400.,  500755.,  506110.,  511465.,  516820.,  523570.,
      528940.,  534310.,  539680.,  273088.,  277456.,  281824.,  286192.,
      291340.,  295720.,  300100.,  304480.,  322265.,  327770.,  333275.,
      338780.,  345200.,  350720.,  356240.,  361760.,  325685.,  331250.,
      336815.,  342380.,  348860.,  354440.,  360020.,  365600.,  329105.,
      334730.,  340355.,  345980.,  352520.,  358160.,  363800.,  369440.,
      171153.,  174546.,  177939.,  181332.,  185202.,  188604.,  192006.,
      195408.,  856544.,  863488.,  870432.,  877376.,  886320.,  893280.,
      900240.,  907200.,  1043220., 1051960., 1060700., 1069440., 1080600.,
      1089360., 1098120., 1106880., 1052580., 1061400., 1070220., 1079040.,
      1090280., 1099120., 1107960., 1116800., 1061940., 1070840., 1079740.,
      1088640., 1099960., 1108880., 1117800., 1126720., 596804.,  602168.,
      607532.,  612896.,  619616.,  624992.,  630368.,  635744.,  969680.,
      978960.,  988240.,  997520.,  1008900., 1018200., 1027500., 1036800.,
      1173275., 1184950., 1196625., 1208300., 1222500., 1234200., 1245900.,
      1257600., 1182975., 1194750., 1206525., 1218300., 1232600., 1244400.,
      1256200., 1268000., 1192675., 1204550., 1216425., 1228300., 1242700.,
      1254600., 1266500., 1278400., 660955.,  668110.,  675265.,  682420.,
      690970.,  698140.,  705310.,  712480.,  1050480., 1060560., 1070640.,
      1080720., 1092900., 1103000., 1113100., 1123200., 1270275., 1282950.,
      1295625., 1308300., 1323500., 1336200., 1348900., 1361600., 1279975.,
      1292750., 1305525., 1318300., 1333600., 1346400., 1359200., 1372000.,
      1289675., 1302550., 1315425., 1328300., 1343700., 1356600., 1369500.,
      1382400., 714355.,  722110.,  729865.,  737620.,  746770.,  754540.,
      762310.,  770080.,  1131280., 1142160., 1153040., 1163920., 1176900.,
      1187800., 1198700., 1209600., 1367275., 1380950., 1394625., 1408300.,
      1424500., 1438200., 1451900., 1465600., 1376975., 1390750., 1404525.,
      1418300., 1434600., 1448400., 1462200., 1476000., 1386675., 1400550.,
      1414425., 1428300., 1444700., 1458600., 1472500., 1486400., 767755.,
      776110.,  784465.,  792820.,  802570.,  810940.,  819310.,  827680.,
      419488.,  426256.,  433024.,  439792.,  447340.,  454120.,  460900.,
      467680.,  493265.,  501770.,  510275.,  518780.,  528200.,  536720.,
      545240.,  553760.,  496685.,  505250.,  513815.,  522380.,  531860.,
      540440.,  549020.,  557600.,  500105.,  508730.,  517355.,  525980.,
      535520.,  544160.,  552800.,  561440.,  259353.,  264546.,  269739.,
      274932.,  280602.,  285804.,  291006.,  296208.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x10x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      149925.,  151050.,  152175.,  153300.,  156950.,  158100.,  159250.,
      160400.,  159625.,  160850.,  162075.,  163300.,  167050.,  168300.,
      169550.,  170800.,  169325.,  170650.,  171975.,  173300.,  177150.,
      178500.,  179850.,  181200.,  246925.,  249050.,  251175.,  253300.,
      257950.,  260100.,  262250.,  264400.,  256625.,  258850.,  261075.,
      263300.,  268050.,  270300.,  272550.,  274800.,  266325.,  268650.,
      270975.,  273300.,  278150.,  280500.,  282850.,  285200.,  343925.,
      347050.,  350175.,  353300.,  358950.,  362100.,  365250.,  368400.,
      353625.,  356850.,  360075.,  363300.,  369050.,  372300.,  375550.,
      378800.,  363325.,  366650.,  369975.,  373300.,  379150.,  382500.,
      385850.,  389200.,  634925.,  641050.,  647175.,  653300.,  661950.,
      668100.,  674250.,  680400.,  644625.,  650850.,  657075.,  663300.,
      672050.,  678300.,  684550.,  690800.,  654325.,  660650.,  666975.,
      673300.,  682150.,  688500.,  694850.,  701200.,  731925.,  739050.,
      746175.,  753300.,  762950.,  770100.,  777250.,  784400.,  741625.,
      748850.,  756075.,  763300.,  773050.,  780300.,  787550.,  794800.,
      751325.,  758650.,  765975.,  773300.,  783150.,  790500.,  797850.,
      805200.,  828925.,  837050.,  845175.,  853300.,  863950.,  872100.,
      880250.,  888400.,  838625.,  846850.,  855075.,  863300.,  874050.,
      882300.,  890550.,  898800.,  848325.,  856650.,  864975.,  873300.,
      884150.,  892500.,  900850.,  909200.,  1119925., 1131050., 1142175.,
      1153300., 1166950., 1178100., 1189250., 1200400., 1129625., 1140850.,
      1152075., 1163300., 1177050., 1188300., 1199550., 1210800., 1139325.,
      1150650., 1161975., 1173300., 1187150., 1198500., 1209850., 1221200.,
      1216925., 1229050., 1241175., 1253300., 1267950., 1280100., 1292250.,
      1304400., 1226625., 1238850., 1251075., 1263300., 1278050., 1290300.,
      1302550., 1314800., 1236325., 1248650., 1260975., 1273300., 1288150.,
      1300500., 1312850., 1325200., 1313925., 1327050., 1340175., 1353300.,
      1368950., 1382100., 1395250., 1408400., 1323625., 1336850., 1350075.,
      1363300., 1379050., 1392300., 1405550., 1418800., 1333325., 1346650.,
      1359975., 1373300., 1389150., 1402500., 1415850., 1429200.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      81712.,   83776.,   85872.,   88000.,   106780.,  109440.,  112140.,
      114880.,  116220.,  119040.,  121900.,  124800.,  125660.,  128640.,
      131660.,  134720.,  73508.,   75296.,   77108.,   78944.,   161940.,
      165520.,  169140.,  172800.,  203725.,  208300.,  212925.,  217600.,
      213525.,  218300.,  223125.,  228000.,  223325.,  228300.,  233325.,
      238400.,  127435.,  130420.,  133435.,  136480.,  243540.,  248720.,
      253940.,  259200.,  301725.,  308300.,  314925.,  321600.,  311525.,
      318300.,  325125.,  332000.,  321325.,  328300.,  335325.,  342400.,
      181435.,  185620.,  189835.,  194080.,  325140.,  331920.,  338740.,
      345600.,  399725.,  408300.,  416925.,  425600.,  409525.,  418300.,
      427125.,  436000.,  419325.,  428300.,  437325.,  446400.,  235435.,
      240820.,  246235.,  251680.,  128284.,  132592.,  136924.,  141280.,
      153335.,  158780.,  164255.,  169760.,  156815.,  162380.,  167975.,
      173600.,  160295.,  165980.,  171695.,  177440.,  84321.,   87732.,
      91161.,   94608.,   472112.,  480576.,  489072.,  497600.,  578780.,
      589440.,  600140.,  610880.,  588220.,  599040.,  609900.,  620800.,
      597660.,  608640.,  619660.,  630720.,  337508.,  344096.,  350708.,
      357344.,  569940.,  581520.,  593140.,  604800.,  693725.,  708300.,
      722925.,  737600.,  703525.,  718300.,  733125.,  748000.,  713325.,
      728300.,  743325.,  758400.,  397435.,  406420.,  415435.,  424480.,
      651540.,  664720.,  677940.,  691200.,  791725.,  808300.,  824925.,
      841600.,  801525.,  818300.,  835125.,  852000.,  811325.,  828300.,
      845325.,  862400.,  451435.,  461620.,  471835.,  482080.,  733140.,
      747920.,  762740.,  777600.,  889725.,  908300.,  926925.,  945600.,
      899525.,  918300.,  937125.,  956000.,  909325.,  928300.,  947325.,
      966400.,  505435.,  516820.,  528235.,  539680.,  277084.,  286192.,
      295324.,  304480.,  327335.,  338780.,  350255.,  361760.,  330815.,
      342380.,  353975.,  365600.,  334295.,  345980.,  357695.,  369440.,
      174321.,  181332.,  188361.,  195408.,  862512.,  877376.,  892272.,
      907200.,  1050780., 1069440., 1088140., 1106880., 1060220., 1079040.,
      1097900., 1116800., 1069660., 1088640., 1107660., 1126720., 601508.,
      612896.,  624308.,  635744.,  977940.,  997520.,  1017140., 1036800.,
      1183725., 1208300., 1232925., 1257600., 1193525., 1218300., 1243125.,
      1268000., 1203325., 1228300., 1253325., 1278400., 667435.,  682420.,
      697435.,  712480.,  1059540., 1080720., 1101940., 1123200., 1281725.,
      1308300., 1334925., 1361600., 1291525., 1318300., 1345125., 1372000.,
      1301325., 1328300., 1355325., 1382400., 721435.,  737620.,  753835.,
      770080.,  1141140., 1163920., 1186740., 1209600., 1379725., 1408300.,
      1436925., 1465600., 1389525., 1418300., 1447125., 1476000., 1399325.,
      1428300., 1457325., 1486400., 775435.,  792820.,  810235.,  827680.,
      425884.,  439792.,  453724.,  467680.,  501335.,  518780.,  536255.,
      553760.,  504815.,  522380.,  539975.,  557600.,  508295.,  525980.,
      543695.,  561440.,  264321.,  274932.,  285561.,  296208.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x10x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      149825.,  153300.,  156825.,  160400.,  159625.,  163300.,  167025.,
      170800.,  169425.,  173300.,  177225.,  181200.,  247825.,  253300.,
      258825.,  264400.,  257625.,  263300.,  269025.,  274800.,  267425.,
      273300.,  279225.,  285200.,  345825.,  353300.,  360825.,  368400.,
      355625.,  363300.,  371025.,  378800.,  365425.,  373300.,  381225.,
      389200.,  639825.,  653300.,  666825.,  680400.,  649625.,  663300.,
      677025.,  690800.,  659425.,  673300.,  687225.,  701200.,  737825.,
      753300.,  768825.,  784400.,  747625.,  763300.,  779025.,  794800.,
      757425.,  773300.,  789225.,  805200.,  835825.,  853300.,  870825.,
      888400.,  845625.,  863300.,  881025.,  898800.,  855425.,  873300.,
      891225.,  909200.,  1129825., 1153300., 1176825., 1200400., 1139625.,
      1163300., 1187025., 1210800., 1149425., 1173300., 1197225., 1221200.,
      1227825., 1253300., 1278825., 1304400., 1237625., 1263300., 1289025.,
      1314800., 1247425., 1273300., 1299225., 1325200., 1325825., 1353300.,
      1380825., 1408400., 1335625., 1363300., 1391025., 1418800., 1345425.,
      1373300., 1401225., 1429200.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      162352.,  163424.,  166464.,  167552.,  170640.,  171744.,  174880.,
      176000.,  212100.,  213560.,  217400.,  218880.,  222780.,  224280.,
      228240.,  229760.,  230820.,  232440.,  236440.,  238080.,  242140.,
      243800.,  247920.,  249600.,  249540.,  251320.,  255480.,  257280.,
      261500.,  263320.,  267600.,  269440.,  145900.,  147016.,  149464.,
      150592.,  153076.,  154216.,  156736.,  157888.,  321340.,  323880.,
      328480.,  331040.,  335700.,  338280.,  343000.,  345600.,  404125.,
      407450.,  413250.,  416600.,  422475.,  425850.,  431800.,  435200.,
      423525.,  427050.,  433050.,  436600.,  442675.,  446250.,  452400.,
      456000.,  442925.,  446650.,  452850.,  456600.,  462875.,  466650.,
      473000.,  476800.,  252575.,  254870.,  258530.,  260840.,  264545.,
      266870.,  270620.,  272960.,  482940.,  487080.,  493280.,  497440.,
      503700.,  507880.,  514200.,  518400.,  598125.,  603450.,  611250.,
      616600.,  624475.,  629850.,  637800.,  643200.,  617525.,  623050.,
      631050.,  636600.,  644675.,  650250.,  658400.,  664000.,  636925.,
      642650.,  650850.,  656600.,  664875.,  670650.,  679000.,  684800.,
      359375.,  362870.,  367730.,  371240.,  376145.,  379670.,  384620.,
      388160.,  644540.,  650280.,  658080.,  663840.,  671700.,  677480.,
      685400.,  691200.,  792125.,  799450.,  809250.,  816600.,  826475.,
      833850.,  843800.,  851200.,  811525.,  819050.,  829050.,  836600.,
      846675.,  854250.,  864400.,  872000.,  830925.,  838650.,  848850.,
      856600.,  866875.,  874650.,  885000.,  892800.,  466175.,  470870.,
      476930.,  481640.,  487745.,  492470.,  498620.,  503360.,  252644.,
      256568.,  261248.,  265184.,  269900.,  273848.,  278600.,  282560.,
      301675.,  306670.,  312550.,  317560.,  323485.,  328510.,  334480.,
      339520.,  308515.,  313630.,  319630.,  324760.,  330805.,  335950.,
      342040.,  347200.,  315355.,  320590.,  326710.,  331960.,  338125.,
      343390.,  349600.,  354880.,  165465.,  168642.,  172278.,  175464.,
      179127.,  182322.,  186012.,  189216.,  936752.,  944224.,  953664.,
      961152.,  970640.,  978144.,  987680.,  995200.,  1148100., 1157560.,
      1169400., 1178880., 1190780., 1200280., 1212240., 1221760., 1166820.,
      1176440., 1188440., 1198080., 1210140., 1219800., 1231920., 1241600.,
      1185540., 1195320., 1207480., 1217280., 1229500., 1239320., 1251600.,
      1261440., 669100.,  675016.,  682264.,  688192.,  695476.,  701416.,
      708736.,  714688.,  1129340., 1139880., 1152480., 1163040., 1175700.,
      1186280., 1199000., 1209600., 1374125., 1387450., 1403250., 1416600.,
      1432475., 1445850., 1461800., 1475200., 1393525., 1407050., 1423050.,
      1436600., 1452675., 1466250., 1482400., 1496000., 1412925., 1426650.,
      1442850., 1456600., 1472875., 1486650., 1503000., 1516800., 786575.,
      794870.,  804530.,  812840.,  822545.,  830870.,  840620.,  848960.,
      1290940., 1303080., 1317280., 1329440., 1343700., 1355880., 1370200.,
      1382400., 1568125., 1583450., 1601250., 1616600., 1634475., 1649850.,
      1667800., 1683200., 1587525., 1603050., 1621050., 1636600., 1654675.,
      1670250., 1688400., 1704000., 1606925., 1622650., 1640850., 1656600.,
      1674875., 1690650., 1709000., 1724800., 893375.,  902870.,  913730.,
      923240.,  934145.,  943670.,  954620.,  964160.,  1452540., 1466280.,
      1482080., 1495840., 1511700., 1525480., 1541400., 1555200., 1762125.,
      1779450., 1799250., 1816600., 1836475., 1853850., 1873800., 1891200.,
      1781525., 1799050., 1819050., 1836600., 1856675., 1874250., 1894400.,
      1912000., 1800925., 1818650., 1838850., 1856600., 1876875., 1894650.,
      1915000., 1932800., 1000175., 1010870., 1022930., 1033640., 1045745.,
      1056470., 1068620., 1079360., 545444.,  554168.,  563648.,  572384.,
      581900.,  590648.,  600200.,  608960.,  643675.,  654670.,  666550.,
      677560.,  689485.,  700510.,  712480.,  723520.,  650515.,  661630.,
      673630.,  684760.,  696805.,  707950.,  720040.,  731200.,  657355.,
      668590.,  680710.,  691960.,  704125.,  715390.,  727600.,  738880.,
      341865.,  348642.,  355878.,  362664.,  369927.,  376722.,  384012.,
      390816.,  1711152., 1725024., 1740864., 1754752., 1770640., 1784544.,
      1800480., 1814400., 2084100., 2101560., 2121400., 2138880., 2158780.,
      2176280., 2196240., 2213760., 2102820., 2120440., 2140440., 2158080.,
      2178140., 2195800., 2215920., 2233600., 2121540., 2139320., 2159480.,
      2177280., 2197500., 2215320., 2235600., 2253440., 1192300., 1203016.,
      1215064., 1225792., 1237876., 1248616., 1260736., 1271488., 1937340.,
      1955880., 1976480., 1995040., 2015700., 2034280., 2055000., 2073600.,
      2344125., 2367450., 2393250., 2416600., 2442475., 2465850., 2491800.,
      2515200., 2363525., 2387050., 2413050., 2436600., 2462675., 2486250.,
      2512400., 2536000., 2382925., 2406650., 2432850., 2456600., 2482875.,
      2506650., 2533000., 2556800., 1320575., 1334870., 1350530., 1364840.,
      1380545., 1394870., 1410620., 1424960., 2098940., 2119080., 2141280.,
      2161440., 2183700., 2203880., 2226200., 2246400., 2538125., 2563450.,
      2591250., 2616600., 2644475., 2669850., 2697800., 2723200., 2557525.,
      2583050., 2611050., 2636600., 2664675., 2690250., 2718400., 2744000.,
      2576925., 2602650., 2630850., 2656600., 2684875., 2710650., 2739000.,
      2764800., 1427375., 1442870., 1459730., 1475240., 1492145., 1507670.,
      1524620., 1540160., 2260540., 2282280., 2306080., 2327840., 2351700.,
      2373480., 2397400., 2419200., 2732125., 2759450., 2789250., 2816600.,
      2846475., 2873850., 2903800., 2931200., 2751525., 2779050., 2809050.,
      2836600., 2866675., 2894250., 2924400., 2952000., 2770925., 2798650.,
      2828850., 2856600., 2886875., 2914650., 2945000., 2972800., 1534175.,
      1550870., 1568930., 1585640., 1603745., 1620470., 1638620., 1655360.,
      838244.,  851768.,  866048.,  879584.,  893900.,  907448.,  921800.,
      935360.,  985675.,  1002670., 1020550., 1037560., 1055485., 1072510.,
      1090480., 1107520., 992515.,  1009630., 1027630., 1044760., 1062805.,
      1079950., 1098040., 1115200., 999355.,  1016590., 1034710., 1051960.,
      1070125., 1087390., 1105600., 1122880., 518265.,  528642.,  539478.,
      549864.,  560727.,  571122.,  582012.,  592416.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x10x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      297425.,  299650.,  304350.,  306600.,  311375.,  313650.,  318500.,
      320800.,  316825.,  319250.,  324150.,  326600.,  331575.,  334050.,
      339100.,  341600.,  336225.,  338850.,  343950.,  346600.,  351775.,
      354450.,  359700.,  362400.,  491425.,  495650.,  502350.,  506600.,
      513375.,  517650.,  524500.,  528800.,  510825.,  515250.,  522150.,
      526600.,  533575.,  538050.,  545100.,  549600.,  530225.,  534850.,
      541950.,  546600.,  553775.,  558450.,  565700.,  570400.,  685425.,
      691650.,  700350.,  706600.,  715375.,  721650.,  730500.,  736800.,
      704825.,  711250.,  720150.,  726600.,  735575.,  742050.,  751100.,
      757600.,  724225.,  730850.,  739950.,  746600.,  755775.,  762450.,
      771700.,  778400.,  1267425., 1279650., 1294350., 1306600., 1321375.,
      1333650., 1348500., 1360800., 1286825., 1299250., 1314150., 1326600.,
      1341575., 1354050., 1369100., 1381600., 1306225., 1318850., 1333950.,
      1346600., 1361775., 1374450., 1389700., 1402400., 1461425., 1475650.,
      1492350., 1506600., 1523375., 1537650., 1554500., 1568800., 1480825.,
      1495250., 1512150., 1526600., 1543575., 1558050., 1575100., 1589600.,
      1500225., 1514850., 1531950., 1546600., 1563775., 1578450., 1595700.,
      1610400., 1655425., 1671650., 1690350., 1706600., 1725375., 1741650.,
      1760500., 1776800., 1674825., 1691250., 1710150., 1726600., 1745575.,
      1762050., 1781100., 1797600., 1694225., 1710850., 1729950., 1746600.,
      1765775., 1782450., 1801700., 1818400., 2237425., 2259650., 2284350.,
      2306600., 2331375., 2353650., 2378500., 2400800., 2256825., 2279250.,
      2304150., 2326600., 2351575., 2374050., 2399100., 2421600., 2276225.,
      2298850., 2323950., 2346600., 2371775., 2394450., 2419700., 2442400.,
      2431425., 2455650., 2482350., 2506600., 2533375., 2557650., 2584500.,
      2608800., 2450825., 2475250., 2502150., 2526600., 2553575., 2578050.,
      2605100., 2629600., 2470225., 2494850., 2521950., 2546600., 2573775.,
      2598450., 2625700., 2650400., 2625425., 2651650., 2680350., 2706600.,
      2735375., 2761650., 2790500., 2816800., 2644825., 2671250., 2700150.,
      2726600., 2755575., 2782050., 2811100., 2837600., 2664225., 2690850.,
      2719950., 2746600., 2775775., 2802450., 2831700., 2858400.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, SAME3x10x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      323632.,  324704.,  325776.,  326848.,  331840.,  332928.,  334016.,
      335104.,  340176.,  341280.,  342384.,  343488.,  348640.,  349760.,
      350880.,  352000.,  422740.,  424200.,  425660.,  427120.,  433320.,
      434800.,  436280.,  437760.,  444060.,  445560.,  447060.,  448560.,
      454960.,  456480.,  458000.,  459520.,  460020.,  461640.,  463260.,
      464880.,  471240.,  472880.,  474520.,  476160.,  482620.,  484280.,
      485940.,  487600.,  494160.,  495840.,  497520.,  499200.,  497300.,
      499080.,  500860.,  502640.,  509160.,  510960.,  512760.,  514560.,
      521180.,  523000.,  524820.,  526640.,  533360.,  535200.,  537040.,
      538880.,  290684.,  291800.,  292916.,  294032.,  297800.,  298928.,
      300056.,  301184.,  305012.,  306152.,  307292.,  308432.,  312320.,
      313472.,  314624.,  315776.,  640140.,  642680.,  645220.,  647760.,
      654400.,  656960.,  659520.,  662080.,  668820.,  671400.,  673980.,
      676560.,  683400.,  686000.,  688600.,  691200.,  804925.,  808250.,
      811575.,  814900.,  823150.,  826500.,  829850.,  833200.,  841575.,
      844950.,  848325.,  851700.,  860200.,  863600.,  867000.,  870400.,
      843525.,  847050.,  850575.,  854100.,  862550.,  866100.,  869650.,
      873200.,  881775.,  885350.,  888925.,  892500.,  901200.,  904800.,
      908400.,  912000.,  882125.,  885850.,  889575.,  893300.,  901950.,
      905700.,  909450.,  913200.,  921975.,  925750.,  929525.,  933300.,
      942200.,  946000.,  949800.,  953600.,  502855.,  505150.,  507445.,
      509740.,  514750.,  517060.,  519370.,  521680.,  526765.,  529090.,
      531415.,  533740.,  538900.,  541240.,  543580.,  545920.,  961740.,
      965880.,  970020.,  974160.,  982400.,  986560.,  990720.,  994880.,
      1003220., 1007400., 1011580., 1015760., 1024200., 1028400., 1032600.,
      1036800., 1190925., 1196250., 1201575., 1206900., 1217150., 1222500.,
      1227850., 1233200., 1243575., 1248950., 1254325., 1259700., 1270200.,
      1275600., 1281000., 1286400., 1229525., 1235050., 1240575., 1246100.,
      1256550., 1262100., 1267650., 1273200., 1283775., 1289350., 1294925.,
      1300500., 1311200., 1316800., 1322400., 1328000., 1268125., 1273850.,
      1279575., 1285300., 1295950., 1301700., 1307450., 1313200., 1323975.,
      1329750., 1335525., 1341300., 1352200., 1358000., 1363800., 1369600.,
      715255.,  718750.,  722245.,  725740.,  731950.,  735460.,  738970.,
      742480.,  748765.,  752290.,  755815.,  759340.,  765700.,  769240.,
      772780.,  776320.,  1283340., 1289080., 1294820., 1300560., 1310400.,
      1316160., 1321920., 1327680., 1337620., 1343400., 1349180., 1354960.,
      1365000., 1370800., 1376600., 1382400., 1576925., 1584250., 1591575.,
      1598900., 1611150., 1618500., 1625850., 1633200., 1645575., 1652950.,
      1660325., 1667700., 1680200., 1687600., 1695000., 1702400., 1615525.,
      1623050., 1630575., 1638100., 1650550., 1658100., 1665650., 1673200.,
      1685775., 1693350., 1700925., 1708500., 1721200., 1728800., 1736400.,
      1744000., 1654125., 1661850., 1669575., 1677300., 1689950., 1697700.,
      1705450., 1713200., 1725975., 1733750., 1741525., 1749300., 1762200.,
      1770000., 1777800., 1785600., 927655.,  932350.,  937045.,  941740.,
      949150.,  953860.,  958570.,  963280.,  970765.,  975490.,  980215.,
      984940.,  992500.,  997240.,  1001980., 1006720., 501364.,  505288.,
      509212.,  513136.,  518560.,  522496.,  526432.,  530368.,  535852.,
      539800.,  543748.,  547696.,  553240.,  557200.,  561160.,  565120.,
      598355.,  603350.,  608345.,  613340.,  620090.,  625100.,  630110.,
      635120.,  641945.,  646970.,  651995.,  657020.,  663920.,  668960.,
      674000.,  679040.,  611915.,  617030.,  622145.,  627260.,  634130.,
      639260.,  644390.,  649520.,  656465.,  661610.,  666755.,  671900.,
      678920.,  684080.,  689240.,  694400.,  625475.,  630710.,  635945.,
      641180.,  648170.,  653420.,  658670.,  663920.,  670985.,  676250.,
      681515.,  686780.,  693920.,  699200.,  704480.,  709760.,  327753.,
      330930.,  334107.,  337284.,  341370.,  344556.,  347742.,  350928.,
      355059.,  358254.,  361449.,  364644.,  368820.,  372024.,  375228.,
      378432.,  1866032., 1873504., 1880976., 1888448., 1899840., 1907328.,
      1914816., 1922304., 1933776., 1941280., 1948784., 1956288., 1967840.,
      1975360., 1982880., 1990400., 2286740., 2296200., 2305660., 2315120.,
      2329320., 2338800., 2348280., 2357760., 2372060., 2381560., 2391060.,
      2400560., 2414960., 2424480., 2434000., 2443520., 2324020., 2333640.,
      2343260., 2352880., 2367240., 2376880., 2386520., 2396160., 2410620.,
      2420280., 2429940., 2439600., 2454160., 2463840., 2473520., 2483200.,
      2361300., 2371080., 2380860., 2390640., 2405160., 2414960., 2424760.,
      2434560., 2449180., 2459000., 2468820., 2478640., 2493360., 2503200.,
      2513040., 2522880., 1332284., 1338200., 1344116., 1350032., 1358600.,
      1364528., 1370456., 1376384., 1385012., 1390952., 1396892., 1402832.,
      1411520., 1417472., 1423424., 1429376., 2248140., 2258680., 2269220.,
      2279760., 2294400., 2304960., 2315520., 2326080., 2340820., 2351400.,
      2361980., 2372560., 2387400., 2398000., 2408600., 2419200., 2734925.,
      2748250., 2761575., 2774900., 2793150., 2806500., 2819850., 2833200.,
      2851575., 2864950., 2878325., 2891700., 2910200., 2923600., 2937000.,
      2950400., 2773525., 2787050., 2800575., 2814100., 2832550., 2846100.,
      2859650., 2873200., 2891775., 2905350., 2918925., 2932500., 2951200.,
      2964800., 2978400., 2992000., 2812125., 2825850., 2839575., 2853300.,
      2871950., 2885700., 2899450., 2913200., 2931975., 2945750., 2959525.,
      2973300., 2992200., 3006000., 3019800., 3033600., 1564855., 1573150.,
      1581445., 1589740., 1600750., 1609060., 1617370., 1625680., 1636765.,
      1645090., 1653415., 1661740., 1672900., 1681240., 1689580., 1697920.,
      2569740., 2581880., 2594020., 2606160., 2622400., 2634560., 2646720.,
      2658880., 2675220., 2687400., 2699580., 2711760., 2728200., 2740400.,
      2752600., 2764800., 3120925., 3136250., 3151575., 3166900., 3187150.,
      3202500., 3217850., 3233200., 3253575., 3268950., 3284325., 3299700.,
      3320200., 3335600., 3351000., 3366400., 3159525., 3175050., 3190575.,
      3206100., 3226550., 3242100., 3257650., 3273200., 3293775., 3309350.,
      3324925., 3340500., 3361200., 3376800., 3392400., 3408000., 3198125.,
      3213850., 3229575., 3245300., 3265950., 3281700., 3297450., 3313200.,
      3333975., 3349750., 3365525., 3381300., 3402200., 3418000., 3433800.,
      3449600., 1777255., 1786750., 1796245., 1805740., 1817950., 1827460.,
      1836970., 1846480., 1858765., 1868290., 1877815., 1887340., 1899700.,
      1909240., 1918780., 1928320., 2891340., 2905080., 2918820., 2932560.,
      2950400., 2964160., 2977920., 2991680., 3009620., 3023400., 3037180.,
      3050960., 3069000., 3082800., 3096600., 3110400., 3506925., 3524250.,
      3541575., 3558900., 3581150., 3598500., 3615850., 3633200., 3655575.,
      3672950., 3690325., 3707700., 3730200., 3747600., 3765000., 3782400.,
      3545525., 3563050., 3580575., 3598100., 3620550., 3638100., 3655650.,
      3673200., 3695775., 3713350., 3730925., 3748500., 3771200., 3788800.,
      3806400., 3824000., 3584125., 3601850., 3619575., 3637300., 3659950.,
      3677700., 3695450., 3713200., 3735975., 3753750., 3771525., 3789300.,
      3812200., 3830000., 3847800., 3865600., 1989655., 2000350., 2011045.,
      2021740., 2035150., 2045860., 2056570., 2067280., 2080765., 2091490.,
      2102215., 2112940., 2126500., 2137240., 2147980., 2158720., 1082164.,
      1090888., 1099612., 1108336., 1118560., 1127296., 1136032., 1144768.,
      1155052., 1163800., 1172548., 1181296., 1191640., 1200400., 1209160.,
      1217920., 1276355., 1287350., 1298345., 1309340., 1322090., 1333100.,
      1344110., 1355120., 1367945., 1378970., 1389995., 1401020., 1413920.,
      1424960., 1436000., 1447040., 1289915., 1301030., 1312145., 1323260.,
      1336130., 1347260., 1358390., 1369520., 1382465., 1393610., 1404755.,
      1415900., 1428920., 1440080., 1451240., 1462400., 1303475., 1314710.,
      1325945., 1337180., 1350170., 1361420., 1372670., 1383920., 1396985.,
      1408250., 1419515., 1430780., 1443920., 1455200., 1466480., 1477760.,
      676953.,  683730.,  690507.,  697284.,  704970.,  711756.,  718542.,
      725328.,  733059.,  739854.,  746649.,  753444.,  761220.,  768024.,
      774828.,  781632.,  3408432., 3422304., 3436176., 3450048., 3467840.,
      3481728., 3495616., 3509504., 3527376., 3541280., 3555184., 3569088.,
      3587040., 3600960., 3614880., 3628800., 4150740., 4168200., 4185660.,
      4203120., 4225320., 4242800., 4260280., 4277760., 4300060., 4317560.,
      4335060., 4352560., 4374960., 4392480., 4410000., 4427520., 4188020.,
      4205640., 4223260., 4240880., 4263240., 4280880., 4298520., 4316160.,
      4338620., 4356280., 4373940., 4391600., 4414160., 4431840., 4449520.,
      4467200., 4225300., 4243080., 4260860., 4278640., 4301160., 4318960.,
      4336760., 4354560., 4377180., 4395000., 4412820., 4430640., 4453360.,
      4471200., 4489040., 4506880., 2373884., 2384600., 2395316., 2406032.,
      2419400., 2430128., 2440856., 2451584., 2465012., 2475752., 2486492.,
      2497232., 2510720., 2521472., 2532224., 2542976., 3856140., 3874680.,
      3893220., 3911760., 3934400., 3952960., 3971520., 3990080., 4012820.,
      4031400., 4049980., 4068560., 4091400., 4110000., 4128600., 4147200.,
      4664925., 4688250., 4711575., 4734900., 4763150., 4786500., 4809850.,
      4833200., 4861575., 4884950., 4908325., 4931700., 4960200., 4983600.,
      5007000., 5030400., 4703525., 4727050., 4750575., 4774100., 4802550.,
      4826100., 4849650., 4873200., 4901775., 4925350., 4948925., 4972500.,
      5001200., 5024800., 5048400., 5072000., 4742125., 4765850., 4789575.,
      4813300., 4841950., 4865700., 4889450., 4913200., 4941975., 4965750.,
      4989525., 5013300., 5042200., 5066000., 5089800., 5113600., 2626855.,
      2641150., 2655445., 2669740., 2686750., 2701060., 2715370., 2729680.,
      2746765., 2761090., 2775415., 2789740., 2806900., 2821240., 2835580.,
      2849920., 4177740., 4197880., 4218020., 4238160., 4262400., 4282560.,
      4302720., 4322880., 4347220., 4367400., 4387580., 4407760., 4432200.,
      4452400., 4472600., 4492800., 5050925., 5076250., 5101575., 5126900.,
      5157150., 5182500., 5207850., 5233200., 5263575., 5288950., 5314325.,
      5339700., 5370200., 5395600., 5421000., 5446400., 5089525., 5115050.,
      5140575., 5166100., 5196550., 5222100., 5247650., 5273200., 5303775.,
      5329350., 5354925., 5380500., 5411200., 5436800., 5462400., 5488000.,
      5128125., 5153850., 5179575., 5205300., 5235950., 5261700., 5287450.,
      5313200., 5343975., 5369750., 5395525., 5421300., 5452200., 5478000.,
      5503800., 5529600., 2839255., 2854750., 2870245., 2885740., 2903950.,
      2919460., 2934970., 2950480., 2968765., 2984290., 2999815., 3015340.,
      3033700., 3049240., 3064780., 3080320., 4499340., 4521080., 4542820.,
      4564560., 4590400., 4612160., 4633920., 4655680., 4681620., 4703400.,
      4725180., 4746960., 4773000., 4794800., 4816600., 4838400., 5436925.,
      5464250., 5491575., 5518900., 5551150., 5578500., 5605850., 5633200.,
      5665575., 5692950., 5720325., 5747700., 5780200., 5807600., 5835000.,
      5862400., 5475525., 5503050., 5530575., 5558100., 5590550., 5618100.,
      5645650., 5673200., 5705775., 5733350., 5760925., 5788500., 5821200.,
      5848800., 5876400., 5904000., 5514125., 5541850., 5569575., 5597300.,
      5629950., 5657700., 5685450., 5713200., 5745975., 5773750., 5801525.,
      5829300., 5862200., 5890000., 5917800., 5945600., 3051655., 3068350.,
      3085045., 3101740., 3121150., 3137860., 3154570., 3171280., 3190765.,
      3207490., 3224215., 3240940., 3260500., 3277240., 3293980., 3310720.,
      1662964., 1676488., 1690012., 1703536., 1718560., 1732096., 1745632.,
      1759168., 1774252., 1787800., 1801348., 1814896., 1830040., 1843600.,
      1857160., 1870720., 1954355., 1971350., 1988345., 2005340., 2024090.,
      2041100., 2058110., 2075120., 2093945., 2110970., 2127995., 2145020.,
      2163920., 2180960., 2198000., 2215040., 1967915., 1985030., 2002145.,
      2019260., 2038130., 2055260., 2072390., 2089520., 2108465., 2125610.,
      2142755., 2159900., 2178920., 2196080., 2213240., 2230400., 1981475.,
      1998710., 2015945., 2033180., 2052170., 2069420., 2086670., 2103920.,
      2122985., 2140250., 2157515., 2174780., 2193920., 2211200., 2228480.,
      2245760., 1026153., 1036530., 1046907., 1057284., 1068570., 1078956.,
      1089342., 1099728., 1111059., 1121454., 1131849., 1142244., 1153620.,
      1164024., 1174428., 1184832.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}
TYPED_TEST(ForwardWindow5Stride2, VALID3x10x10x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      592625.,  594850.,  597075.,  599300.,  606450.,  608700.,  610950.,
      613200.,  620475.,  622750.,  625025.,  627300.,  634700.,  637000.,
      639300.,  641600.,  631225.,  633650.,  636075.,  638500.,  645850.,
      648300.,  650750.,  653200.,  660675.,  663150.,  665625.,  668100.,
      675700.,  678200.,  680700.,  683200.,  669825.,  672450.,  675075.,
      677700.,  685250.,  687900.,  690550.,  693200.,  700875.,  703550.,
      706225.,  708900.,  716700.,  719400.,  722100.,  724800.,  978625.,
      982850.,  987075.,  991300.,  1000450., 1004700., 1008950., 1013200.,
      1022475., 1026750., 1031025., 1035300., 1044700., 1049000., 1053300.,
      1057600., 1017225., 1021650., 1026075., 1030500., 1039850., 1044300.,
      1048750., 1053200., 1062675., 1067150., 1071625., 1076100., 1085700.,
      1090200., 1094700., 1099200., 1055825., 1060450., 1065075., 1069700.,
      1079250., 1083900., 1088550., 1093200., 1102875., 1107550., 1112225.,
      1116900., 1126700., 1131400., 1136100., 1140800., 1364625., 1370850.,
      1377075., 1383300., 1394450., 1400700., 1406950., 1413200., 1424475.,
      1430750., 1437025., 1443300., 1454700., 1461000., 1467300., 1473600.,
      1403225., 1409650., 1416075., 1422500., 1433850., 1440300., 1446750.,
      1453200., 1464675., 1471150., 1477625., 1484100., 1495700., 1502200.,
      1508700., 1515200., 1441825., 1448450., 1455075., 1461700., 1473250.,
      1479900., 1486550., 1493200., 1504875., 1511550., 1518225., 1524900.,
      1536700., 1543400., 1550100., 1556800., 2522625., 2534850., 2547075.,
      2559300., 2576450., 2588700., 2600950., 2613200., 2630475., 2642750.,
      2655025., 2667300., 2684700., 2697000., 2709300., 2721600., 2561225.,
      2573650., 2586075., 2598500., 2615850., 2628300., 2640750., 2653200.,
      2670675., 2683150., 2695625., 2708100., 2725700., 2738200., 2750700.,
      2763200., 2599825., 2612450., 2625075., 2637700., 2655250., 2667900.,
      2680550., 2693200., 2710875., 2723550., 2736225., 2748900., 2766700.,
      2779400., 2792100., 2804800., 2908625., 2922850., 2937075., 2951300.,
      2970450., 2984700., 2998950., 3013200., 3032475., 3046750., 3061025.,
      3075300., 3094700., 3109000., 3123300., 3137600., 2947225., 2961650.,
      2976075., 2990500., 3009850., 3024300., 3038750., 3053200., 3072675.,
      3087150., 3101625., 3116100., 3135700., 3150200., 3164700., 3179200.,
      2985825., 3000450., 3015075., 3029700., 3049250., 3063900., 3078550.,
      3093200., 3112875., 3127550., 3142225., 3156900., 3176700., 3191400.,
      3206100., 3220800., 3294625., 3310850., 3327075., 3343300., 3364450.,
      3380700., 3396950., 3413200., 3434475., 3450750., 3467025., 3483300.,
      3504700., 3521000., 3537300., 3553600., 3333225., 3349650., 3366075.,
      3382500., 3403850., 3420300., 3436750., 3453200., 3474675., 3491150.,
      3507625., 3524100., 3545700., 3562200., 3578700., 3595200., 3371825.,
      3388450., 3405075., 3421700., 3443250., 3459900., 3476550., 3493200.,
      3514875., 3531550., 3548225., 3564900., 3586700., 3603400., 3620100.,
      3636800., 4452625., 4474850., 4497075., 4519300., 4546450., 4568700.,
      4590950., 4613200., 4640475., 4662750., 4685025., 4707300., 4734700.,
      4757000., 4779300., 4801600., 4491225., 4513650., 4536075., 4558500.,
      4585850., 4608300., 4630750., 4653200., 4680675., 4703150., 4725625.,
      4748100., 4775700., 4798200., 4820700., 4843200., 4529825., 4552450.,
      4575075., 4597700., 4625250., 4647900., 4670550., 4693200., 4720875.,
      4743550., 4766225., 4788900., 4816700., 4839400., 4862100., 4884800.,
      4838625., 4862850., 4887075., 4911300., 4940450., 4964700., 4988950.,
      5013200., 5042475., 5066750., 5091025., 5115300., 5144700., 5169000.,
      5193300., 5217600., 4877225., 4901650., 4926075., 4950500., 4979850.,
      5004300., 5028750., 5053200., 5082675., 5107150., 5131625., 5156100.,
      5185700., 5210200., 5234700., 5259200., 4915825., 4940450., 4965075.,
      4989700., 5019250., 5043900., 5068550., 5093200., 5122875., 5147550.,
      5172225., 5196900., 5226700., 5251400., 5276100., 5300800., 5224625.,
      5250850., 5277075., 5303300., 5334450., 5360700., 5386950., 5413200.,
      5444475., 5470750., 5497025., 5523300., 5554700., 5581000., 5607300.,
      5633600., 5263225., 5289650., 5316075., 5342500., 5373850., 5400300.,
      5426750., 5453200., 5484675., 5511150., 5537625., 5564100., 5595700.,
      5622200., 5648700., 5675200., 5301825., 5328450., 5355075., 5381700.,
      5413250., 5439900., 5466550., 5493200., 5524875., 5551550., 5578225.,
      5604900., 5636700., 5663400., 5690100., 5716800.};
  const std::array<int, 4> in_shape = {{3, 10, 10, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_forward_test(exp_out, in_shape, multiplier, padding, max_input_val);
}